我在一个MySQL表使用DISTINCT得到了一个神秘的行为,并不能算出它不会工作:的MySQL DISTINCT当某些列选择
SELECT DISTINCT `deal_hash`,`city_name`
FROM `a`
WHERE `city_name` = 'b'
...会告诉我有期望的输出DISTINCT on deal_hash。我也可以在任何其它列添加到选择,它会工作只有在两种情况下DISTINCT将失败
SELECT DISTINCT `deal_hash`,`deal_link`
FROM `a`
WHERE `city_name` = 'b'
和
SELECT DISTINCT `deal_hash`,`loaded_at`
FROM `a`
WHERE `city_name` = 'b'
deal_link
是一个varchar(255)和loaded_at一个INT(20) 。
'distinct'适用于所有列在'select'名单不只是第一个。这是你的困惑的根源吗?如果不是,请解释“DISTINCT将会失败”的含义。 – 2011-04-10 00:26:58
'DISTINCT'显示不同的**行**。 PostgreSQL是我所知道的支持'DISTINCT ON'的唯一DB,应用于特定的列。 – 2011-04-10 00:29:25
谢谢你正是这个问题,没有意识到DISTINCT的完整行为,如果现在有人发布这个答案,我会接受:) – kritop 2011-04-10 00:40:06