select * from gifts INNER JOIN sentGifts ON gifts.giftID = -6ren">
gpt4 book ai didi

sql - 在 SQL/MySQL 中,join 语句中的 "ON"和 "WHERE"有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 12:57:31 24 4
gpt4 key购买 nike

以下语句给出相同的结果(一个使用 on,另一个使用 where):

mysql> select * from gifts INNER JOIN sentGifts ON gifts.giftID = sentGifts.giftID;
mysql> select * from gifts INNER JOIN sentGifts WHERE gifts.giftID = sentGifts.giftID;

我只能在左外连接的情况下看到“不匹配”的情况:
(找出从未有人送过的礼物)

mysql> select name from gifts LEFT OUTER JOIN sentgifts 
ON gifts.giftID = sentgifts.giftID
WHERE sentgifts.giftID IS NULL;

在这种情况下,它首先使用on,然后使用whereon 是否首先进行匹配,然后 where 进行“二级”过滤?或者是否有更通用的规则来使用 onwhere?谢谢。

最佳答案

ON 子句定义表之间的关系。

WHERE 子句描述您感兴趣的行。

很多时候你可以交换它们并且仍然得到相同的结果,但是左外连接并不总是这样。

  • If the ON clause fails you still get a row with columns from the left table but with nulls in the columns from the right table.
  • If the WHERE clause fails you won't get that row at all.

关于sql - 在 SQL/MySQL 中,join 语句中的 "ON"和 "WHERE"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722795/

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