【问题标题】:Is a query with table separated by comma a cross join query?用逗号分隔表的查询是交叉连接查询吗?
【发布时间】:2014-05-30 08:07:09
【问题描述】:

我知道一些 SQL,但我总是使用joinleftcross 等,但在查询中表用逗号分隔。对我来说,这看起来像是一个交叉连接。但是我不知道怎么测试(结果和我尝试的一样)。

SELECT A.id, B.id
FROM A,B
WHERE A.id_B = B.id

即使在伟大的问题(有很好的答案)"What is the difference between Left, Right, Outer and Inner Joins?" 我也没有找到答案。

【问题讨论】:

标签: sql operation


【解决方案1】:

这是 1992 年以前的旧标准 SQL 连接语法,您不应在今天编写的任何内容中模仿或使用它

where 子句指定连接样式和列。您可以使用=*==* 在哪里进行连接,左或右连接。 WHERE 中没有连接,使其成为交叉连接。

【讨论】:

  • 甚至没有交叉连接(没有where的查询)? (我不喜欢这种语法,但很高兴知道)
【解决方案2】:

如果没有关联两个表的WHERE 子句,它 是交叉连接。在这种情况下,它在功能上等同于内部连接(通过id_relid 匹配记录)

这是一种较旧的连接表语法,在大多数系统中仍受支持,但在很大程度上首选 JOIN 语法。

【讨论】:

    【解决方案3】:

    只要您在 where 子句中提供了连接条件,此语法就会产生内部连接。例如:

    Where tableA.value = TableB.Value
    

    【讨论】:

      【解决方案4】:

      在我看来像INNER JOIN

      即双方都必须存在才能得到结果。

      例如:

      SELECT 
        A.id, B.id
      FROM A
        INNER JOIN B ON A A.id_rel = B.id
      

      【讨论】:

        猜你喜欢
        • 2013-05-31
        • 2020-09-14
        • 1970-01-01
        • 2019-05-23
        • 1970-01-01
        • 2012-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多