SQL-检查记录是否存在于多个表中

问题描述 投票:1回答:1

我一直在堆栈中搜索类似的问题,但是找不到解决这个问题的方法,或者我听不懂。我有3张桌子。

Users
+---------+------+--------------+
| id_user | name | age          |
+---------+------+--------------+
| user1   | John | 51           |
+---------+------+--------------+
| user2   | Jane | 65           |
+---------+------+--------------+
| user3   | Katie| 51           |
+---------+------+--------------+
| user4   | Marck| 65           |
+---------+------+--------------+


City1
+---------+------+--------------+
| id_user | time | street       |
+---------+------+--------------+
| user1   | 8    | 111111111111 |
+---------+------+--------------+
| user2   | 5    | 222222222222 |
+---------+------+--------------+

City2
+---------+------+--------------+
| user_id | time | street       |
+---------+------+--------------+
| user1   | 6    | 111111111111 |
+---------+------+--------------+
| user4   | 7    | 222222222222 |
+---------+------+--------------+

我正在尝试进行查询,以了解City1和City2表中是否存在特定的id_user。我真的不知道如何构造它。例如,完成id_user = user1,我想收到诸如city1 = true,city2 = true之类的信息。 (在两个表中,user1存在);或完成id_user = 2,获得city1 = true,city2 = false。

有关如何执行此操作的任何想法?

mysql sql multiple-tables
1个回答
5
投票

如果没有在每个表中重复用户ID,则可以使用left outer join

select u.*,
       (c1.id_user is not null) as InCity1,
       (c2.id_user is not null) as InCity2
from users u left outer join
     city1 c1
     on u.id_user = c1.id_user left outer join
     city2 c2
     on u.id_user = c2.id_user;

如果您只想查看一位用户的信息,则可以添加where子句。

© www.soinside.com 2019 - 2024. All rights reserved.