Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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_Sql Server_Tsql - Fatal编程技术网

SQL-选择记录集不包含值的位置

SQL-选择记录集不包含值的位置,sql,sql-server,tsql,Sql,Sql Server,Tsql,我不确定标题是否准确地反映了我正在寻找的内容 我有一个标题表和一个行表。对于每个标题,可以有多行记录 如果lines表不包含标题记录的行值,我想返回该标题记录 示例: 标题表- | ID | xyz...| | 1 | abc | | 2 | abc | 行表- | LineID | HeaderID | xyz...| | 1 | 1 | abc | | 2 | 1 | abc | | 3 | 1 |

我不确定标题是否准确地反映了我正在寻找的内容

我有一个标题表和一个行表。对于每个标题,可以有多行记录

如果lines表不包含标题记录的行值,我想返回该标题记录

示例:

标题表-

| ID | xyz...|
|  1 |  abc  |
|  2 |  abc  |
行表-

| LineID | HeaderID | xyz...|
| 1      |    1     | abc   |
| 2      |    1     | abc   |
| 3      |    1     | abc   |
| 3      |    2     | abc   |
| 4      |    2     | abc   |
| 5      |    2     | abc   |
在本例中,如果搜索不包含行ID为1或2的记录,我希望返回标题记录2

我想不起对我生命的质疑,即使我知道它正盯着我的脸


当我想到要尝试的查询时,我会发布它们来显示我的工作方式,但我希望有人能对此给出答案。

一个简单的
不存在的
就可以了:

SELECT *
FROM Header h
WHERE NOT EXISTS(
    SELECT 1
    FROM Lines l
    WHERE
        l.HeaderID = h.ID
        AND l.LineID IN(1, 2)
)

一个简单的
不存在
就可以了:

SELECT *
FROM Header h
WHERE NOT EXISTS(
    SELECT 1
    FROM Lines l
    WHERE
        l.HeaderID = h.ID
        AND l.LineID IN(1, 2)
)
查询:

SELECT h.*
FROM Header h
LEFT JOIN Lines l
  ON l.HeaderID = h.ID
  AND l.LineID IN(1, 2)
WHERE l.HeaderID is null
查询:

SELECT h.*
FROM Header h
LEFT JOIN Lines l
  ON l.HeaderID = h.ID
  AND l.LineID IN(1, 2)
WHERE l.HeaderID is null

太好了,谢谢+1对于一个简单简洁的查询,我认为它会比这复杂得多。我必须承认,我的最后一次尝试是到达那里,我只是没有想到添加'AND l.LineID',而是选择了ID,而不是'1'。出于好奇,为什么它是“选择1”?@deekay90,
中的
选择
列不存在
没有被正确评估。您可以将其替换为
1/0
,它仍然不会出错。非常好,谢谢+1对于一个简单简洁的查询,我认为它会比这复杂得多。我必须承认,我的最后一次尝试是到达那里,我只是没有想到添加'AND l.LineID',而是选择了ID,而不是'1'。出于好奇,为什么它是“选择1”?@deekay90,
中的
选择
列不存在
没有被正确评估。您可以将其替换为
1/0
,它仍然不会出错。我对此进行了改进,因为我喜欢知道实现任务的多种方法,很好!谢谢我之所以把这一点提高了,是因为我喜欢知道实现一项任务的多种方法,很好!谢谢