我无法理解SQL查询,因为它不是我的强项。我正在尝试在员工表中选择行的名称,id
的行显示在另一个表salesPersonId
的列accounts
中。也就是说,在帐户表中表示的任何员工姓名。
ACCOUNT
+----+---------------+
| id | salesPersonID |
+----+---------------+
| 0 | 1020 |
+----+---------------+
| 1 | 1020 |
+----+---------------+
| 2 | 1009 |
+----+---------------+
EMPLOYEE
+------+---------------+
| id | firstName |
+------+---------------+
| 1009 | BILL | <-select his name
+------+---------------+
| 1020 | KATE | <-select her name
+------+---------------+
| 1025 | NEIL | <-not this guy
+------+---------------+
由于Neil在account.salesPersonID中没有任何存在,我想选择除他之外的其他两个。不过,我并没有走得太远,并寻找一些意见。
SELECT * FROM employee e
LEFT JOIN account a
ON a.salesPersonID = e.id
WHERE (SELECT COUNT(salesPersonID) FROM account) > 0
不起作用。我想知道如何选择salesPersonID
中存在的这些员工姓名。谢谢。
答案 0 :(得分:4)
试试这个:
SELECT Distinct e.firstName
FROM employee e
JOIN account a ON a.salesPersonID = e.id
JOIN
将负责过滤,以确保您只返回两个表中存在的记录。
Distinct
将确保您只获得每次firstName
值。您还可以通过employee.Id
或employee.firstName
进行分组来实现此目的(如果您希望为每个唯一员工返回一行,则按ID分组是更好的策略,即使他们具有相同的名字,也可以分组firstName
或使用distinct
用于您只需要每个唯一名称中的一个,即使该名称由多个员工使用)
答案 1 :(得分:0)
从employees1 e中选择e.firstname e左边的加入帐户a(e.id = a.salespersonid) 其中e.id = a.salespersonid e.firstname小组
结果:
姓名 法案 凯特