软件包: package_id,user_id
交易: PRODUCT_ID,USER_ID,的package_id
我想在package_id为null或0的事务中选择行 但仅当存在其他具有相同user_id的事务时,其中package id大于0 那可能吗。对不起英语不好......我试过瞪眼,但无法猜出谷歌查询的正确问题。
我知道标题不合适,所以请任何人提出更好的标题。
Gwynnbleid1
答案 0 :(得分:1)
也许这......我试图不惜一切代价避免次选,所以它会变得疯狂而且有点混乱,而且在我尝试之前我从未真正知道它是否有效。
SELECT DISTINCT T.*
FROM packages P
LEFT JOIN transactions T
ON P.user_id = T.user_id
LEFT JOIN transactions T2
ON T.user_id = T2.user_id
WHERE ( T.package_id IS NULL
OR T.package_id = 0 )
AND T2.package_id > 0
答案 1 :(得分:0)
此查询将为至少有一项其他交易package_id > 0
或NULL
0
的用户提供package_id
的所有交易。
SELECT * FROM transactions WHERE user_id IN
(SELECT user_id FROM transactions WHERE package_id IS NULL OR package_id = 0)
AND package_id > 0;
答案 2 :(得分:0)
SELECT A.* FROM
(SELECT * FROM TRANSACTIONS WHERE (package_id = 0 or package_id is null)) A
(SELECT * FROM TRANSACTIONS WHERE package_id is not null) B
WHERE A.userID = B.userID