gpt4 book ai didi

sql - INNER JOIN ON 与 WHERE 子句

转载 作者:行者123 更新时间:2023-11-29 19:22:41 24 4
gpt4 key购买 nike

为了简单起见,假设所有相关字段都是NOT NULL

你可以这样做:

SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1, table2
WHERE
table1.foreignkey = table2.primarykey
AND (some other conditions)

否则:

SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1 INNER JOIN table2
ON table1.foreignkey = table2.primarykey
WHERE
(some other conditions)

这两者在 MySQL 中的工作方式相同吗?

最佳答案

INNER JOIN 是您应该使用的 ANSI 语法。

它通常被认为更具可读性,尤其是当您连接大量表时。

每当需要时,它也可以轻松地用 OUTER JOIN 替换。

WHERE 语法更面向关系模型。

两个表JOIN的结果是应用了过滤器的表的笛卡尔积,该过滤器仅选择那些具有匹配的连接列的行。

使用 WHERE 语法更容易看到这一点。

就您的示例而言,在 MySQL(以及通常的 SQL)中,这两个查询是同义词。

另外,请注意 MySQL 也有一个 STRAIGHT_JOIN 子句。

使用此子句,您可以控制JOIN顺序:在外循环中扫描哪一个表,在内循环中扫描哪一个表。

您无法使用 WHERE 语法在 MySQL 中控制这一点。

关于sql - INNER JOIN ON 与 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42356609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com