我在我的数据库中执行这2个查询。第一个返回1条记录,第二个返回2241条(如我所料)。我用两种不同的方式询问同样的事情。在第一个中,我使用DISTINCT
,在第二个中我使用“GROUP BY”。这不一样吗?与DISTINCT和GROUP BY不同的结果
/*returns 1 record*/
SELECT DISTINCT INVENTORY.location, INVENTORY.label, INVENTORY.version, SUM(INVENTORY.quantity) AS total, LABELS.description, LABELS.customer , LABELS.label
FROM INVENTORY
INNER JOIN LABELS
ON INVENTORY.label = LABELS.label
AND INVENTORY.version = LABELS.version
WHERE INVENTORY.location = 1
/*returns 2241 record*/
SELECT Inventory.location, Inventory.label, Inventory.version, SUM(INVENTORY.quantity) AS total, Labels.description, Labels.customer, LABELS.label
FROM Inventory
INNER JOIN LABELS
ON Inventory.label = Labels.label
AND Inventory.version = Labels.version
WHERE Inventory.location = 1
GROUP BY Inventory.label, Inventory.Version
实际上:两者都是无效的SQL第一个完全缺少所需的“group by”,第二个没有对所有非聚合列进行分组。我很惊讶,SQLite甚至接受这一点。 –
我没有得到任何错误...! – yaylitzis
@a_horse_with_no_name自从DISTINCT需要GROUP BY时? – m0skit0