gpt4 book ai didi

sql - INNER JOIN ON vs WHERE 子句

转载 作者:IT老高 更新时间:2023-10-28 12:47:18 25 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 语法更面向关系模型。

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

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

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

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

使用该子句,可以控制JOIN顺序:外循环扫描哪张表,内循环扫描哪一张。

您无法在 MySQL 中使用 WHERE 语法来控制它。

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

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