我希望找到GROUPID的情况下,所有的价格值为0以下是我所期待的如何使用自联接在组内找到相同的值?
--------------------------------
| 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其中两个的简化版本对于特定组价格值= 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 |
--------------------------------
对我来说,我只需要我t返回GROUPID 003.
我还想要求帮助修改查询以返回groupid中的所有非0等于PRICE值。它不必与上面相同的查询。例如,退货将是:
| Groupid | Price | Customer|
--------------------------------
| 002 | 4 | 4 |
| 002 | 4 | 4 |
任何帮助,将不胜感激。感谢您的时间。
可以了'price'为空? – mathguy
对于这类问题,连接很少是正确的答案。 GROUP BY和HAVING子句是更有效的方法(Gordon根据这些方法发布了答案)。 – mathguy