我正在寻找所有价格值为 0 的 GROUPID 实例。以下是我正在查看的内容的简化版本
--------------------------------
| Groupid | Price | Customer|
--------------------------------
| 001 | 9 | 4 |
| 001 | 0 | 4 |
| 002 | 4 | 4 |
| 002 | 4 | 4 |
| 003 | 0 | 4 |
| 003 | 0 | 4 |
| 004 | 4 | 4 |
| 004 | 7 | 4 |
--------------------------------
我尝试使用以下查询来查找所有 GROUPID,其中该特定组的两个 PRICE 值都 = 0。
SELECT * FROM MYTABLE WHERE GROUPID IN
(SELECT TB1.GROUPID FROM MYTABLE TB1 JOIN MYTABLE TB2 ON TB1.GROUPID = TB2.GROUPID
AND TB1.PRICE = 0 AND TB2.PRICE = 0)
and CUSTOMER = 4
ORDER BY GROUPID;
此查询返回:
| Groupid | Price | Customer|
--------------------------------
| 001 | 9 | 4 |
| 001 | 0 | 4 |
| 003 | 0 | 4 |
| 003 | 0 | 4 |
--------------------------------
就我而言,我只需要它返回 GROUPID 003。
我还想请求帮助修改查询以返回 groupid 内所有非 0 相等的 PRICE 值。它不必与上面的查询位于同一查询中。例如,返回结果为:
| Groupid | Price | Customer|
--------------------------------
| 002 | 4 | 4 |
| 002 | 4 | 4 |
如有任何帮助,我们将不胜感激。感谢您抽出时间。
最佳答案
如果所有价格都为零,则查看该 groupid 的最低和最高价格:
select groupid
from mytable t
group by groupid
having min(price) = 0 and max(price) = 0;
我应该指出,这不需要自加入。
关于sql - 如何使用自连接来查找组内的相等值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41168436/