我有两个表,用户:
| 标识符|全名|是管理员|
| - -|- -|- -|
| 一个|简|第0页|
| 2个|赫利奥|第0页|
| 三个|弗兰|第0页|
| 四个|米拉|第0页|
| 五个|管理员|一个|
审批人:
| 标识符|下属标识|审批人标识|
| - -|- -|- -|
| 一个|一个|2个|
| 2个|三个|四个|
并且我希望执行一个查询,以显示在approvers表的subordinate_id列中没有id的用户名。
我试着这样说:
SELECT
full_name
FROM user AS U
WHERE NOT EXISTS(
SELECT * FROM approver AS A
WHERE A.subordinate_id = U.id AND U.is_admin = 0);
但在本例中,管理员用户仍然会加入,我不想加入在usuario表中is_admin列为1的用户。我只想加入普通用户,而不加入管理员。
有人能帮我吗?
3条答案
按热度按时间vptzau2j1#
尝试此查询
wljmcqd82#
您需要将
AND U.is_admin = 0
放在EXISTS
之外DB Fiddle Demo
ep6jt1vc3#
你可以尝试这个查询。我们可以在第一个表中选择admin=“0”,然后在第二个表中进行左连接。在这之后,我们可以进行内部连接的逆操作,以获得你所期望的结果。