如果列存在于另一个表中,请选择Statement以返回TaskID

时间:2016-06-24 14:23:45

标签: sql sql-server tsql

我有两张桌子。

第一个表被称为任务,第二个表被命名为国家。

我的任务表

                 ID    TaskID   Country         CustomerID
                 ------------------------------------------
                 1     213      china               22
                 2     213      USA                 24
                 3     213      china               26
                 4     214      Canada              28

国家/地区表

           ID  Country
           ---------------
           1  USA
           2  Japan
           3  England

我需要一个select语句,它返回所有没有国家/地区的国家/地区表格的任务ID。 在这种情况下,我需要返回TASKID:214,因为加拿大不在国家/地区表中。我不会得到TASKID:213,因为美国在国家表中。

3 个答案:

答案 0 :(得分:3)

试试这个:

SELECT
   TaskID
FROM
   Task T LEFT OUTER JOIN Countries C ON (T.COUNTRY = C.COUNTRY)
GROUP BY
    TaskID
HAVING
    COUNT(C.ID) = 0

答案 1 :(得分:0)

试试这个,

   select taskid 
    from task where taskid not in
                  (select taskid from task where country in
                          (select country from countries))

答案 2 :(得分:0)

试试这个,

SELECT t.taskid
FROM task t
WHERE EXISTS (
        SELECT 1
        FROM countries
        WHERE country = t.country
        )