SQL select 来自多个表的唯一 ID

SQL select unique ID from multiple tables

我有多个 SQL table,例如两个 table 的员工来自 office1 和 office2。每个雇主都有一个唯一的 ID,我也有。我不知道雇主在办公室工作,所以我想 select 来自 tables.

注意 实际上我最多有 50 tables,仍然有一个唯一的 ID。

例如雇主的数据库名称

use employers
SHOW tables;

+---------------------+
| Tables_in_employers |
+---------------------+
| office1             |
| office2             |
+---------------------+

SELECT * FROM `office1`, `office2` WHERE ID=1

Column `ID` in where clause is ambiguous

我见过这样的解决方案:(SELECT * FROM multiple tables. MySQL)

SELECT * FROM `office1`, `office2` WHERE office1.ID=1 GROUP BY

但是该语句只在 office1 table 中搜索,而我想搜索两个 table 并且只搜索 return ID 匹配的行。

现在我倾向于使用 for 循环遍历每个 table(在 python 中),但在我实施之前我想确保这不能完成(更快)纯 SQL.

使用联合:

SELECT ID, office
FROM (select ID, 'office' as 'office1' FROM office1
      union all
      select ID, 'office' as 'office2' FROM office2) allOffices
WHERE ID=1;

或创建视图:

create view allOffices as 
  select ID, 'office' as 'office1' from office1 
  union all 
  select ID, 'office' as 'office2' from office2;

之后你可以做:

SELECT ID, office
FROM allOffices WHERE ID=1

输出将包含列 ID,以及具有在 CREATE VIEW.

中指定名称的列 office

注意:如果两个办公室都存在 ID,这些查询可能 return 多于 1 行。