2016-04-29 155 views
0

这个查询GROUP BY不返回正确的结果

SELECT releases.id,releases.label_no_country,releases.date 
FROM releases 
INNER JOIN labels_user_has_recd luhr 
ON luhr.label=releases.label_no_country 
WHERE luhr.user='Si Quick' 
GROUP BY releases.id 
HAVING datediff(now(),releases.date) < 90 
ORDER BY releases.date DESC 
LIMIT 0,10 

id label_no_country date 
605639 Church 2016-04-28 
595303 Uncanny Valley 2016-04-21 
605806 Dekmantel 2016-04-21 
607276 Uncanny Valley 2016-04-21 
604280 Delsin 2016-04-21 
598653 Another Picture  2016-04-21 
605016 Skylevel 2016-04-20 
606342 Retreat  2016-04-14 
599363 Frank Music  2016-04-12 
599320 Spazio Disponibile 2016-04-08 

我想在label_no_count列不返回任何重复的(即不是Uncanny Valley两次。

我曾尝试在以下查询中使用GROUP BY

SELECT releases.id,releases.label_no_country,releases.date 
FROM releases 
INNER JOIN labels_user_has_recd luhr 
ON luhr.label=releases.label_no_country 
WHERE luhr.user='Si Quick' 
GROUP BY releases.label_no_country 
HAVING datediff(now(),releases.date) < 90 
ORDER BY releases.date DESC 
LIMIT 0,10 

但这只能返回一个结果,而不是删除重复

id label_no_country date 
599320 Spazio Disponibile 2016-04-08 
+0

有没有聚合函数在这里,所以GROUP BY没有任何用处。并且decorum阻止我说出我对提供没有数据集的结果集的看法 – Strawberry

+0

感觉不需要数据集,因为它很可能会成为查询中的错误...已被接受的答案证明。 – Franco

回答

1

移动HAVINGWHERE条件像

WHERE datediff(now(),releases.date) < 90 

您的查询应该是

SELECT releases.id,releases.label_no_country,releases.date 
FROM releases 
INNER JOIN labels_user_has_recd luhr 
ON luhr.label=releases.label_no_country 
WHERE luhr.user='Si Quick' 
AND datediff(now(),releases.date) < 90 
GROUP BY releases.label_no_country 
ORDER BY releases.date DESC 
LIMIT 0,10 
+0

非常感谢。 – Franco