mysql - 合并多个表

标签 mysql

Table1: ID,Name,some more columns
Table2: ID
Table3: Name

我想从表 1 中获取输出,其 ID 存在于 Table2.IDs 中,其名称存在于 Table3.Name 中。

换句话说,选择所有 3 个表中都存在的数据。

例如:

表 1:

1 John
2 Will
3 Michael

表 2:

1

表 3:

Will

输出应该是

1 John
2 Will

最佳答案

您需要使用 JOIN。

您的描述和示例输出不匹配,所以我将分别给您一个示例。

根据你的描述,应该是2个INNER JOIN:

select table1.id, table1.name
from table1
inner join table2 on table2.id = table1.id
inner join table3 on table3.name = table1.name

根据您的输出,它应该是 2 个带有 WHERE 子句的 OUTER JOINS,指定至少满足 2 个连接之一:

select table1.id, table1.name
from table1
left outer join table2 on table2.id = table1.id
left outer join table3 on table3.name = table1.name
where table2.id is not null or table3.name is not null

关于mysql - 合并多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5317246/

相关文章:

mysql - 在 MySQL Workbench 中搜索多个字符串

php - 包含 2 个或更多字段的 sql 搜索

PHP/MySQL : Is it possible to add one to the field without selecting from db?

MySQL:将两列上的 SELECT DISTINCT 放入一个别名列中

mysql - 这个MySQL触发器是线程安全的吗?

MySQL:没有索引的唯一约束

mysql - 内部联接或其他合并数据的方法

php - 将文章的 ID 添加为隐藏输入而不确保它存在于服务器端是否被认为是不好的做法?

mysql - Ruby on Rails 2.3.8 : How do I do a custom SQL query, 作为对象/ActiveRecord 对象返回,而不是散列?

php - MySQL 与 PHP 书