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 行。
我有多个 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 行。