想象一个非常简单的数据库模式:
CREATE TABLE Employee
(
id INTEGER PRIMARY KEY NOT NULL,
name TEXT NOT NULL
);
CREATE TABLE Department
(
id INTEGER PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
manager_employee_id INTEGER,
loveliest_jumper_employee_id INTEGER
);
字符串
这里,Department
表中的两个..._employee_id
列是Employee
表的外键。
我想得到一份员工信息清单,列出所有员工的信息,这些员工要么是经理,要么是他们部门里最可爱的员工。
这样做可以:
SELECT Employee.*
FROM Employee, Department
WHERE Employee.id = Department.manager_employee_id
UNION
SELECT Employee.*
FROM Employee, Department
WHERE Employee.id = Department.loveliest_jumper_employee_id;
型
但这有点痛苦。在我的例子中,实际上有四个相关的外键列,而不是两个,所以它更加多余。有没有更简单的方法来写这个查询?
关于我的情况的一些额外要点:
- 有时候外键可能是NULL(即没有经理和/或在该部门中根本没有可爱的跳线),并且在结果集中不应该有用于该情况的行。
- 您可以假设没有外键(NULL除外)被列在多个行或列中(没有一个是多个部门的)。而且没有经理有可爱的跳线)。
- 除了Employee表,我不需要结果集中的任何信息。既不是部门名称,也不是员工与部门的关系(经理/可爱的毛衣穿着者)。
2条答案
按热度按时间vohkndzv1#
我们也可以使用
IN
子句:字符串
zaq34kh62#
字符串