Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 如果另一个表中存在列,则Select语句返回TaskID_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如果另一个表中存在列,则Select语句返回TaskID

Sql 如果另一个表中存在列,则Select语句返回TaskID,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有两张桌子 第一个表名为task,第二个表名为countries 我的任务表 ID TaskID Country CustomerID ------------------------------------------ 1 213 china 22 2 213 USA

我有两张桌子

第一个表名为task,第二个表名为countries

我的任务表

                 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语句,该语句返回在国家表中没有其国家/地区I的所有任务ID。 在这种情况下,我需要返回TASKID:214,因为加拿大不在国家表中。我不会得到TASKID:213,因为美国在国家表中。

试试这个

   select taskid 
    from task where taskid not in
                  (select taskid from task where country in
                          (select country from countries))
试试这个

   select taskid 
    from task where taskid not in
                  (select taskid from task where country in
                          (select country from countries))
试试这个:

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

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

SELECT t.taskid
FROM task t
WHERE EXISTS (
        SELECT 1
        FROM countries
        WHERE country = t.country
        )
试着这样,

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

中国不在国家表中。我知道,只要具有相同TaskID的国家之一不在该表中,我就需要返回TaskID支持。如果一个任务Id具有多个国家,则所有国家都应存在于国家表中,否则您将不需要该TaskID。不是吗?我的实际国家表中有12个国家被认为是我的要求禁止的。如果我这样做的话,我将不得不在国家表中列出世界上所有的国家,除了12个被禁止的国家。我需要在国家/地区表中找到哪个taskID具有禁止的国家/地区。我的实际任务表比这个大,我只是在这里简化了它。你的问题和你的评论违反了。请编辑您的问题。中国不在国家表中。我知道,只要具有相同TaskID的国家之一不在该表中,我就需要返回TaskID支持。如果一个任务Id有多个国家,则所有国家都应该存在于国家表中,否则您将不需要该TaskID。不是吗?我的实际国家表中有12个国家被认为是我的要求禁止的。如果我这样做的话,我将不得不在国家表中列出世界上所有的国家,除了12个被禁止的国家。我需要在国家/地区表中找到哪个taskID具有禁止的国家/地区。我的实际任务表比这个大,我只是在这里简化了它。你的问题和你的评论违反了。请编辑您的问题。国家可能是nvarchar或varchar,因此这不是最好的方式,因为它容易出现人为错误。应该在任务表中添加一个countryId列,并将其与countries表的Id进行比较,因为它可能是主键。这对我来说不起作用。我需要在country表中找到哪个taskID具有国家/地区。如果taskID为213,如果任何一行的国家/地区在国家/地区表中,我需要htat taskidCountry可能是nvarchar或varchar,因此这不是最好的方法,因为它容易出现人为错误。应该在任务表中添加一个countryId列,并将其与countries表的Id进行比较,因为它可能是主键。这对我来说不起作用。我需要在country表中找到哪个taskID具有国家/地区。如果taskID为213,如果任何行的国家/地区在国家/地区表中,我需要htat taskID