sql中的内连接使用问题

时间:2017-09-29 18:59:18

标签: sql inner-join

请问您能否在SQL语言中接受以下内容 -

当条件是具有不同名称的2个属性相等时,我是否可以在JOIN 2表ON条件下写入join语句。例如,写

是否有效
{{1}}

如果a.c和b.d属性包含相同类型的值,并且在逻辑上是相同的。 提前致谢。

1 个答案:

答案 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因为它是明确的,并且将连接条件与连接本身放在查询的同一部分中,以便于维护。