mysql - SQL 在单列上连接多个表

标签 mysql sql join

我可以使用 USING 子句连接 2 个以上的表吗?即我可以这样做吗

SELECT * FROM (a, b, c) USING(date)

或类似的东西而不是

SELECT * FROM a, b USING(date), c USING(date)

?

我正在使用 MySQL。

编辑
我从答案中看出我被误解了。第二个示例工作正常,但对于许多表来说变得非常冗长和冗长。我正在寻找一种更简洁的语法,而不是更复杂的方法来实现这一点。

最佳答案

没有这样的语法来实现你想要的,但是有一件事很接近:

它有点被看不起,但你可以考虑使用 NATURAL JOIN 语法,其中用于连接的条件是隐含的,因为你不需要指定要加入的列。隐式条件发生在您正在加入的表中具有相同名称的列上。

如果 date 是所有表中唯一具有相同名称的列,那么您可以这样做:

SELECT *
FROM a
NATURAL JOIN b
NATURAL JOIN c

这将隐式连接 date 列上的表,因为表中的字段名称相同。

这种方法的缺点当然是您不能在另一个表中有任何其他具有相同名称的列,否则您的连接将中断,因为这些列将被考虑在内无意中加入条件。

更多关于 NATURAL JOIN

关于mysql - SQL 在单列上连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11222777/

相关文章:

mysql - 对大数据进行排序的最佳数据存储是什么

php - 绑定(bind)后如何以字符串形式检索 MySql 语句?

mysql - 禁止访问数据库

mysql - 加入未产生所需结果

mysql - 在 bash 中输出 mysql 命令而不是换行

php - phpinfo.php 中未列出 MySQL,仅列出 mysqlnd

mysql - 如何查询哪个员工已全职工作

php - 执行查询时,我在 wampserver MySql 5.7.14 中收到与 sql_mode=only_full_group_by 相关的错误

mysql - SQL 连接 2 个表 - 在第二个连接的列上排序不同的结果

MySQL 子查询/连接