是的,关于这个问题有一千个问题,但我一直在寻找半个小时,我还没有找到解决方案。
所以,我有一张这样的桌子:
这是我的疑问:
SELECT DISTINCT rengasID,leveys FROM renkaat ORDER BY leveys ASC
这是我得到的结果:
如果你明白了,我用它填充一个选择字段,但它仍然有重复。
我做错了什么?
答案 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将检查每个选定字段的混合,因此在这种情况下,它将搜索rengasID
和leveys
的不同组合。
你不能在这里要求你的身份证,因为MySQL无法知道你想要哪一个。
根据你想要做的事情,在一个具有唯一ID的单独表格中保存你的“leveys”(我不确定它们是什么)并加入它可能更为正确。要使用所有可能的leveys填充列表,您只需查询该新表。
这可能很重要,因为使用group by
,您可以稍后获取id的随机结果。
答案 2 :(得分:0)
这是因为您选择的是rengasID
和leveys
的组合。而你得到的结果是两者的明显结合。
要实现您的目标,请参阅@GordonLinoff的答案。