gpt4 book ai didi

sql - 奇怪的 SQL 连接

转载 作者:行者123 更新时间:2023-12-01 10:10:07 26 4
gpt4 key购买 nike

谁能给我解释一下这个 SQL 查询匹配的语法是什么?

SELECT DISTINCT boats.boatid
FROM boats LEFT JOIN reservations ON
reservations.boatid = boats.boatid
and (@paramFromDate <= reservations.to AND reservations.from <= @paramToDate )
WHERE reservations.to IS NULL

表格:

**boats** boatid

**reservations** reservationid, fk_boatid, from, to

查询的想法是获取标有参数的日期范围内的非预订船只。覆盖范围的任何部分甚至部分覆盖的任何船只都无法使用。

这个“and...”代码是怎么来的?为什么它缺少 WHERE 关键字之类的东西?似乎 WHERE 隐含在那里?

最佳答案

当您执行 JOIN 时,您可以有多个条件。 AND 是什么让你只有在“这个”和“那个”为真时才加入。您也可以将其移至 WHERE 子句,但如果它是 JOIN 条件的一部分,SQL 可以更好地优化它。更不用说在这种情况下,由于 LEFT JOIN,它可能会给出不同的结果。我无法分辨,因为我不确定最高价和最低价来自哪个表。

简而言之,它是连接条件的一部分。

SELECT DISTINCT beverages.beverageid
FROM beverages
LEFT JOIN invoices ON invoices.beverageid = beverages.beverageid AND (100 <= maxprice AND minprice <= 500)
WHERE maxprice IS NULL

(重写了代码,这样更容易读懂)

关于sql - 奇怪的 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5940868/

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