我试图获得NOT EXISTS
的挂起并遇到一些麻烦。 说我有一个2表。了解不存在
Employees:
+------+------+
| eid | name |
+------+------+
| 1 | Bob |
| 2 | Alice|
| 3 | Jill |
+------+------+
Transactions:
+----------+----------+----------+-----------+
| tid | eid | type | amount |
+----------+----------+----------+-----------+
| 1 | 1 | Deposit | 50 |
| 2 | 1 | Open | 500 |
| 3 | 3 | Open | 200 |
| 4 | 2 | Withdraw | 25 |
| 5 | 2 | Open | 100 |
+----------+----------+----------+-----------+
比方说,我想找到所有未开立任何帐户的所有雇员的名称,金额为$ 250或更高。这意味着我只想要员工已经开设了一笔金额为< 250美元的账户。 现在我有这样的事情...
SELECT name FROM Employees e
WHERE NOT EXISTS (
SELECT * FROM Transactions t
WHERE t.type <> 'Open' AND t.amount >= 250 AND t.eid = e.eid);
这显然是错误的,我真的不明白为什么。
“这意味着我只想要员工打开一个金额<250美元的账户的行。“---所以你希望用户使用”OPEN“和”<250“进行交易? – zerkms
我认为您的问题有点含糊:“没有开立任何金额为250美元或更高的帐户的员工”与“开立金额低于250美元的帐户的员工”不同。第一种情况将包括从未开立账户的员工。你在追求什么? – BellevueBob
对不起。只有开设了金额低于250美元的账户的员工。 – user1378863