我希望选择(或删除)以下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']
答案 0 :(得分:1)
在Id
子句中添加GROUP BY
,必须添加select语句中存在的组中的每一列:
SELECT ID
FROM AHsTransactions
GROUP BY ID, TypeID, AH1ID, AH2ID
HAVING COUNT(*) > 1
答案 1 :(得分:0)
您还必须按id
分组。这就是错误消息告诉你的内容。将其添加到您的group by
列表中。通常,如果它在您的选择列表中,您还必须按其分组。