V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
baize
V2EX  ›  数据库

sql 查询语句请教

  •  
  •   baize · Sep 3, 2018 · 2770 views
    This topic created in 2800 days ago, the information mentioned may be changed or developed.

    不知道怎么排版,所以只能抽象点了 如下表 table

    id1(1,2,3,4,5,6) id2(x,x,y,y,z,x) id3(a,b,c,a,b,d)

    要查询条件为:已知 id3 字段 的 不同值(例如已知 id3 字段的值有 a,b,d ),查出这些 已知不同的值中 id2 字段相同 的集合

    7 replies    2018-09-04 10:46:07 +08:00
    TommyLemon
        1
    TommyLemon  
       Sep 3, 2018   ❤️ 1
    ‘ id2 字段相同 的集合’ 是什么意思?
    如果是指去除满足 id3(a,b,d)条件的结果集中重复的 id2 ( x,x,z ) 变成 x,z, 那 GROUP BY 就行了
    ```sql
    SELECT * FROM table WHERE id3 IN('a', 'b', 'd') GROUP BY id2
    ```
    zjp
        2
    zjp  
       Sep 3, 2018   ❤️ 1
    如果你说的是 找出那些相应的 id2 全都相同的 id3,可以这样
    SELECT id3 FROM (select id3 from T group by id3, id2) AS f GROUP BY f.id3 HAVING COUNT(id3) = 1;
    而且也不需要预先知道 id3 的所有取值
    baize
        3
    baize  
    OP
       Sep 3, 2018
    @zjp 对的,感谢
    baize
        4
    baize  
    OP
       Sep 3, 2018
    @TommyLemon 是二楼这个意思,感谢
    zjp
        5
    zjp  
       Sep 4, 2018   ❤️ 1
    总觉得两个 GROUP BY 很鬼畜,果然是脑子掉坑里了
    SELECT id3 FROM t GROUP BY id3 HAVING COUNT(DISTINCT id2) = 1;
    jookr
        6
    jookr  
       Sep 4, 2018   ❤️ 1
    LZ 头像违规
    weimiangege
        7
    weimiangege  
       Sep 4, 2018   ❤️ 1
    LZ 头像违规
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2889 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 07:21 · PVG 15:21 · LAX 00:21 · JFK 03:21
    ♥ Do have faith in what you're doing.