请问您能否在SQL语言中接受以下内容 -
当条件是具有不同名称的2个属性相等时,我是否可以在JOIN 2表ON条件下写入join语句。例如,写
是否有效{{1}}
如果a.c和b.d属性包含相同类型的值,并且在逻辑上是相同的。 提前致谢。
答案 0 :(得分:1)
是的,这是标准的SQL。这是一个答案,以便在SQL中记录Inner join
操作的有效形式以及通常不喜欢的内容和原因。
第一种是旧式“隐式交叉连接和过滤”方法。通过这种方式你可以写:
SELECT *
FROM a, b
WHERE a.c=b.c
这通常是不受欢迎的,因为分离连接条件和连接本身会使查询更难以解决,更难以阅读,因此更难维护。接下来的两种等效方法就是您正在使用的方法:
SELECT *
FROM a
JOIN b ON a.c = b.c
您也可以使用INNER JOIN
代替JOIN
:
SELECT *
FROM a
INNER JOIN b ON a.c = b.c
现在还有另一种方法可行(但在某些情况下遇到问题),因为您使用相同的查询,可以使用using
关键字:
SELECT *
FROM a
JOIN b USING (c);
最后有自然连接,假设c与USING
相同,只不过它选择了所有具有相同名称的列:
SELECT *
FROM a
NATURAL JOIN b;
通常我们使用ON
因为它是明确的,并且将连接条件与连接本身放在查询的同一部分中,以便于维护。