gpt4 book ai didi

mysql - SQL - 两个表的 WHERE 和 JOIN 之间的区别

转载 作者:行者123 更新时间:2023-11-30 01:12:42 24 4
gpt4 key购买 nike

以下是这两个 SQL 查询:

SELECT `o`.`date`, `i`.`description`, `o`.`quantity`
FROM `orders` AS `o`, `items` AS `i`
WHERE `i`.`itemID` = `o`.`itemID`;

SELECT `o`.`date`, `i`.`description`, `o`.`quantity`
FROM `orders` AS `o`
JOIN `items` AS `i`
ON `i`.`itemID` = `o`.`itemID`;

我得到的结果比第一个结果少了一个。谁能解释一下两者之间的区别?

最佳答案

它们在功能上是等效的,因为 MySQL 优化器将 theta join 重写为 ANSI JOIN(至少 MySQL 5.6 是这样)

您可以使用 EXPLAIN EXTENDED your_query 进行检查;显示警告;

theta 风格连接

SELECT `o`.`date`, `i`.`description`, `o`.`quantity`
FROM `orders` AS `o`, `items` AS `i`
WHERE `i`.`itemID` = `o`.`itemID`;

ANSI 连接

SELECT `o`.`date`, `i`.`description`, `o`.`quantity`
FROM `orders` AS `o`
JOIN `items` AS `i`
ON `i`.`itemID` = `o`.`itemID`;

唯一真正的区别是可读性,theta 风格更容易让人误以为它是 INNER JOIN,因此养成习惯,编写 ANSI JOIN

关于mysql - SQL - 两个表的 WHERE 和 JOIN 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345475/

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