SELECT DISTINCT仍显示重复项

时间:2014-02-12 13:47:21

标签: php mysql sql pdo distinct

是的,关于这个问题有一千个问题,但我一直在寻找半个小时,我还没有找到解决方案。

所以,我有一张这样的桌子: enter image description here

这是我的疑问:

SELECT DISTINCT rengasID,leveys FROM renkaat ORDER BY leveys ASC

这是我得到的结果:

enter image description here

如果你明白了,我用它填充一个选择字段,但它仍然有重复。

我做错了什么?

3 个答案:

答案 0 :(得分:7)

如果您需要不同的levey,请选择该字段:

SELECT DISTINCT leveys
FROM renkaat
ORDER BY leveys ASC

rengasid每行都有不同的值。

distinct子句适用于所有返回的列,无论括号如何。

编辑:

如果您需要结果中的regasid,请使用group by

select leveys, min(regasid) as regasid
from renkaat
group by leveys
order by leveys asc;

这给出了第一个id。如果您需要所有这些内容,可以使用group_concat()将它们放入列表中。如果你在每一行都需要一个单独的id,那么你就有了重复。

答案 1 :(得分:2)

您的rengasID在每个显示的行中仍然不同。 distinct将检查每个选定字段的混合,因此在这种情况下,它将搜索rengasIDleveys的不同组合。

你不能在这里要求你的身份证,因为MySQL无法知道你想要哪一个。

根据你想要做的事情,在一个具有唯一ID的单独表格中保存你的“leveys”(我不确定它们是什么)并加入它可能更为正确。要使用所有可能的leveys填充列表,您只需查询该新表。 这可能很重要,因为使用group by,您可以稍后获取id的随机结果。

答案 2 :(得分:0)

这是因为您选择的是rengasIDleveys的组合。而你得到的结果是两者的明显结合。

要实现您的目标,请参阅@GordonLinoff的答案。