gpt4 book ai didi

sql - Derby,SQL:为什么这些语句返回不同的结果集?

转载 作者:行者123 更新时间:2023-12-02 09:46:34 25 4
gpt4 key购买 nike

已加入的数据库:

IDDATALINE TIMESTAMP               IDDATALINE DATATYPE DATA
---------- ----------------------- ---------- -------- ---------
8 2014-09-09 22:05:16.376 8 4 139789
7 2014-09-09 22:04:07.706 7 7 457220807
6 2014-09-05 18:08:52.231 6 4 277559
5 2014-09-05 18:07:39.707 5 7 629011561
4 2014-08-30 14:29:13.478 4 4 205035
3 2014-08-30 14:26:59.562 3 7 97505332
2 2014-08-29 11:21:54.23 2 4 71119

陈述1:
SELECT datalines_e_3.timestamp 
FROM datalines_e_3,
datalong_3
WHERE datalines_e_3.iddataline = datalong_3.iddataline
AND (datalong_3.data =4 OR datalong_3.datatype =5 OR datalong_3.datatype =6 OR datalong_3.datatype =7 OR datalong_3.datatype =8 OR datalong_3.datatype =9)
AND datalines_e_3.timestamp > '2014-09-05 18:07:39.707'

陈述2:
SELECT datalines_e_3.timestamp 
FROM datalines_e_3,
datalong_3
WHERE ( datalines_e_3.iddataline = datalong_3.iddataline
AND datalines_e_3.timestamp > '2014-09-05 18:07:39.707'
AND (datalong_3.data >=4 AND datalong_3.datatype <=9)
)

声明1的结果集:
 TIMESTAMP
-----------------------
2014-09-09 22:04:07.706

声明2的结果:
 TIMESTAMP
-----------------------
2014-09-05 18:08:52.231
2014-09-09 22:05:16.376
2014-09-09 22:04:07.706

对我的应用程序来说正确的结果来自于statement2,但我不明白为什么Statement1返回不同的结果集。

有人可以告诉我我想念什么吗?

最佳答案

因为您有两个不同的条件:

datalong_3.data = 4

与...有所不同
datalong_3.data >=4

我认为您真正想要的是在其中使用 datatype列,而不是 data,因此第一条语句中的 OR条件列表应为:
datalong_3.datatype in (4,5,6,7,8,9)

(我使用 IN子句使它更短)

或在第二条语句中,您可能想要:
datalong_3.datatype >= 4 and datalong_3.datatype <= 9

可以改写成
datalong_3.datatype between 4 and 9

关于sql - Derby,SQL:为什么这些语句返回不同的结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25758569/

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