Sql 两个问题之间有什么区别
我个人觉得我对这两个查询都给出了相同的条件,那么为什么它们会产生不同的结果呢。而我认为他们应该产生同样的结果。我就是不明白这种反常的本性。请给我解释一下Sql 两个问题之间有什么区别,sql,Sql,我个人觉得我对这两个查询都给出了相同的条件,那么为什么它们会产生不同的结果呢。而我认为他们应该产生同样的结果。我就是不明白这种反常的本性。请给我解释一下 SELECT MIN(EventID ) FROM [3rdi_Events] WHERE EventID IN ( SELECT DISTINCT EventId FROM [3rdi_EventDates] W
SELECT
MIN(EventID )
FROM
[3rdi_Events]
WHERE
EventID IN (
SELECT DISTINCT
EventId
FROM
[3rdi_EventDates]
WHERE
EventDate Between '2/9/2011' AND '3/11/2012'
)
GROUP BY
EventTypeId
及
考虑这一点:
EventId Date EventType
1 1/1/11 1
2 3/3/11 1
第一个查询包括日期在2011年2月9日和2012年3月11日之间的事件,即2号事件
第二个查询仅包括给定类型(编号1)(第一个子选择)的最小事件ID的事件,其日期介于2011年9月2日和2012年11月3日之间(第二个子选择)。没有与此组合匹配的行。在部件的第二个查询中:
WHERE
E.EventID IN (
SELECT
min(EventId)
FROM
[3rdi_Events]
GROUP BY
EventTypeId
)
您没有eventdate的条件,因此可以从表中搜索最小元素,也可以搜索其他部分:
AND
E.EventID IN (
SELECT DISTINCT
EventId
FROM
[3rdi_EventDates]
WHERE
EventDate Between'2/9/2011' AND '3/11/2012'
)
在那个日期范围内。因此,如果最小值不在该范围内,则不会显示它。但是,第一个查询返回该日期范围内的最小元素。在第一个查询中,您选择的是日期在
'2/9/2011'
和'3/11/2012'
在第二个查询中,您选择的是EventId
,其中EventId
是表中的最小值和'2/9/2011'
和'3/11/2012'
如果在第二次查询中,如果表中的最小EventId
不在这些日期内,则不应返回任何值
我想
AND
E.EventID IN (
SELECT DISTINCT
EventId
FROM
[3rdi_EventDates]
WHERE
EventDate Between'2/9/2011' AND '3/11/2012'
)