我在SQL Server中有一条select语句,该语句提取的行数超过了应有的行数,我不知道为什么。
SELECT
CONVERT(varchar(50), [EventStamp], 120)
FROM
A2ALMDB.dbo.v_AlarmHistory
WHERE
EventStamp BETWEEN '2018-08-31 00:00' AND '2018-09-01 00:00'
AND Area = 'Additives_CLX' OR Area = 'Mixer_CTRLX'
ORDER BY
EventStamp DESC
该语句将从我的数据库中返回〜250000行,以挖掘我想要的日期之外的日期:
SELECT
CONVERT(varchar(50), [EventStamp], 120)
FROM
A2ALMDB.dbo.v_AlarmHistory
WHERE
EventStamp BETWEEN '2018-08-31 00:00' AND '2018-09-01 00:00'
AND Area = 'Additives_CLX'
ORDER BY
EventStamp DESC
工作正常;我在这里做错了什么?
答案 0 :(得分:2)
尝试使用以下逻辑运行您的第一个查询:
SELECT CONVERT(varchar(50), [EventStamp], 120)
FROM A2ALMDB.dbo.v_AlarmHistory
WHERE EventStamp BETWEEN '2018-08-31 00:00' AND '2018-09-01 00:00' AND
Area IN ('Additives_CLX', 'Mixer_CTRLX')
ORDER BY EventStamp DESC;
这可能就是您想要的。您的查询被解析为:
WHERE (EventStamp BETWEEN '2018-08-31' AND '2018-09-01' AND Area = 'Additives_CLX') OR
Area = 'Mixer_CTRLX'
因此日期条件仅适用于'Additives_CLX'
,而不适用于两个值。