SQL:选择特定列上唯一的行

时间:2017-09-20 20:49:20

标签: mysql sql

我有一个与

计划配对的表格
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

提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用嵌套查询。

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

我不确定如何更改它,以便以最可能的组合产生结果。

答案 1 :(得分:0)

你也可以使用排名

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