Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 两个问题之间有什么区别_Sql - Fatal编程技术网

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'
)