我有一张下表,想返回id列中的值,其中pay列中的值之和等于或大于3。
id paid
30 1
20 0
30 1
40 1
30 0
30 1
20 0
因此,对于上面的表(订单),查询应该返回30,而不是20或40。我觉得这应该是一个简单的查询,并且尝试了以下操作,但没有用:
SELECT id FROM orders
GROUP BY id
HAVING SUM(status >= 3)
非常感谢任何帮助
答案 0 :(得分:1)
使用以下查询。在建立总和之前,您必须比较完整的总和而不是值。
SELECT id FROM orders GROUP by id HAVING SUM(paid) >= 3
我希望这会有所帮助。
答案 1 :(得分:0)
您需要3的过滤器不会产生任何结果,因为没有ID具有3个“已付费”实例
但是,以下SQL代码可以正常工作并产生结果:
SELECT orders.myID
FROM orders
GROUP BY myID
HAVING SUM(paid >= 1)
您需要做的就是更改HAVING SUM(paid >= 1)
以包括“已付费”实例的任何数量阈值
您没有在架构中给我们一个“状态”字段,但是考虑到您要查找的内容,提到的内容应该可以工作。
您可能包括引用数据库(mySQL,SQL Server,Oracle,Access等),整个架构,示例数据,您要完成的工作以及代码当前正在执行的任何错误消息,因此我们可以为您提供最佳答案。
但是,此方法应该对您有用:)如果不行,请通知我。