簡體   English   中英

SQL:選擇在特定列上唯一的行

[英]SQL: select rows which are unique on specific columns

我有一個問題表與方案

id1     question1    id2    question2
1123    q1           2      q2
1123    q1           3      q3
1123    q1           1231   q142
2431    q12          1231   q142

(ID不是增量的,可以認為是隨機的)

我想選擇在id1和id2中都唯一的元組,例如,對於上面的示例,所需的輸出可能是:

id1     question1    id2    question2
1123    q1           2      q2
2431    q12          1231   q142

先感謝您。

使用嵌套查詢。

SELECT *
FROM (SELECT *
      FROM yourTable
      GROUP BY id1) AS x
GROUP BY id2

但是,這將如何進行分組是不可預測的。 如果子查詢選擇

id1     id2
1123    1231
2431    1231

那么最終結果將是:

id1     id2
1123    1231

要么

id1     id2
2431    1231

我不確定如何更改它,以便它以最可能的組合產生結果。

您也可以使用排名

SELECT id1,
       question1,
       id2,
       question2
  FROM (SELECT CASE id1 
                    WHEN @curType 
                    THEN @curRow := @curRow + 1 
                    ELSE @curRow := 1 AND @curType := id1 
                END rank,
                id1,
                question1,
                id2,
                question2
           FROM q,
                (SELECT @curRow := 0, @curType := '') r
          ORDER BY  id1, id2
        ) t
 WHERE rank = 1

結果

rank id1  id2
1    1123 2
1    2431 1231

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM