具有GROUP BY和HAVING的Select语句中的ID

时间:2015-06-26 14:59:59

标签: mysql sql

我希望选择(或删除)以下SQL中包含的所有ID ...

SELECT ID 
FROM AHsTransactions
GROUP BY TypeID, AH1ID, AH2ID
HAVING COUNT(*) > 1

问题是如何从此分组中的行中获取ID?

一个简单的数据集是:     INSERT INTO AHsTransactions(TypeID, AH1ID, AH2ID) VALUES (1, 2, 3), (1, 2, 3), (1, 2, 4)

我已经使用多个SQL语句工作,但在一个SQL语句中不可能吗?

1)SELECT TypeID, AH1ID, AH2ID FROM AHsTransactions GROUP BY TypeID, AH1ID, AH2ID HAVING COUNT(ID) > 1

然后我浏览返回的行并删除(或选择ID)......

2)DELETE FROM AHsTransactions WHERE TypeID=$row[$i]['TypeID'] AND AH1ID=$row[$i]['AH1ID'] AND AH2ID=$row[$i]['AH2ID']

2 个答案:

答案 0 :(得分:1)

Id子句中添加GROUP BY,必须添加select语句中存在的组中的每一列:

SELECT ID 
FROM AHsTransactions
GROUP BY ID, TypeID, AH1ID, AH2ID
HAVING COUNT(*) > 1

答案 1 :(得分:0)

您还必须按id分组。这就是错误消息告诉你的内容。将其添加到您的group by列表中。通常,如果它在您的选择列表中,您还必须按其分组。