我可以使用 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/