Mysql SQL:选择特定列上唯一的行
我有一个问题表,上面有两个问题,一对一对,一对一对Mysql SQL:选择特定列上唯一的行,mysql,sql,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
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
或
我不知道如何更改它,使其以最可能的组合生成结果。您也可以使用排名
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
所以这不是免费的编码服务。你必须自己尝试解决这个问题。如果你不能让它工作,张贴你尝试,我们将帮助你修复它。使用GROUP BY按这些列对数据进行分组,使用COUNT*计算组中的行数。当计数为1时,它是唯一的。所需的输出与描述不匹配。为什么输出中没有id1=1123,id2=3?这也是一个独特的组合。因为id1=1123当前已出现。问题是我不知道如何分别对两列使用distinct。GROUP BY id1,ID2您的示例中是否缺少一些数据?您的所有行在id1和id2中都是唯一的。
rank id1 id2
1 1123 2
1 2431 1231