嗨,我需要選擇一些用戶郵件,我不明白如何。MySQL應該使用WHERE NOT EXISTS嗎?
我有3張桌子。
用戶,支付和代碼
當一個用戶支付(內部消除代碼),一條線是添加到payement表,我們有一些像
<strong>Payement Table</strong>
+----+--------+--------+--------+
| Id | UserId | Amount | CodeId |
+----+--------+--------+--------+
| 01 | 2545 | 20 | 0 |
+----+--------+--------+--------+
如果同一用戶現在用代碼付款
<strong>Payement Table</strong>
+----+--------+--------+--------+
| Id | UserId | Amount | CodeId |
+----+--------+--------+--------+
| 01 | 2545 | 20 | 0 |
| 02 | 2545 | 5 | 42 |
+----+--------+--------+--------+
我想要的是選擇所有已經付款但尚未使用過代碼的客戶(本例中爲CodeId = 42)。
所以,我想這個
SELECT mail
FROM User "
INNER JOIN payement ON User.id = payement.UserId
WHERE payement.CodeId<>42
AND payement.amount>0
GROUP BY mail
我的問題是:
我仍然有客戶誰使用代碼這個請求。我想我知道爲什麼。但是我應該使用WHERE NOT EXISTS嗎?怎麼樣 ?
您能否提供其他表的模式? – RRajani
SQL應該可以正常工作。它不應該返回42的任何CodeId。 –
@LuudvanKeulen它也將返回客戶以外的42 CodeId.Means CodeId = 0,1,2 ..,40,41,43,44 .. –