gpt4 book ai didi

SQL - JOIN BETWEEN 与 WHERE BETWEEN

转载 作者:行者123 更新时间:2023-12-03 00:44:21 25 4
gpt4 key购买 nike

几周前,我做了一个查询(不记得为什么),它涉及 BETWEEN 运算符。起初,我在 WHERE 子句中使用了它,但它没有产生正确的结果集(同样,我不记得问题是什么)。我思考了原因,最终得出结论,我必须将其移至 JOIN 子句。

例如

“原始”查询:

SELECT --something
FROM table1 a
/*type of*/ JOIN table2 b ON a.field = b.field
WHERE b.field2 BETWEEN a.field2 AND a.field3 /*some other conditions*/

修改后的查询:

SELECT --something
FROM table1 a
/*type of*/ JOIN table2 b ON a.field = b.field
AND b.field2 BETWEEN a.field2 AND a.field3
WHERE /*some other conditions*/

WHERE 版本相比,JOIN 版本返回了更小的结果集,并且 JOIN 版本生成了正确的结果集,而 >哪里一个没有。

我现在问的原因是因为当时我没有想到这件事,但今天我的老板质疑我为什么这样做(对于一个完全不同的查询),我告诉他我上次这样做的经历,他和我都对这两种用法之间的差异非常感兴趣。

据我所知,为什么一个生成的内容与另一个不同的是,WHERE 子句版本仅选择一系列数据,而JOIN 版本寻找要加入的一系列数据。是这样吗?或者我确实遇到了受其余查询影响的独特体验(查询比示例复杂得多)。

编辑我不同意可能的重复,因为我的一个专门查看 BETWEEN 子句,而不是一般的连接。我之前读过上述帖子,但它没有回答我的问题,因此我发布了此帖子。

最佳答案

两个版本之间没有区别,除非由于缺少括号而导致其中一个版本的优先级错误。

关于SQL - JOIN BETWEEN 与 WHERE BETWEEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29011643/

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