SQL删除存在值的行和具有该值的后续列

Posted

技术标签:

【中文标题】SQL删除存在值的行和具有该值的后续列【英文标题】:SQL Remove row where value exist and subsequent column that has the value 【发布时间】:2020-04-08 14:05:58 【问题描述】:

我正在尝试编写一个 SQL 语句,它首先只获取第 1 列的不同值,然后我想将它与同一个表进行比较,但删除所有在第 2 列中有值的行

例如,当我编写一个不包含 10142 的选择时,FieldID 中的值 10142 它只删除了第 1 行,而且随后的 ID 列也没有行。

所以在屏幕截图中,我应该只看到 ID 634 的所有结果,因为 633 的 FieldID 值为 10142。

我最初尝试将不同的 ID 值放入临时表中,然后在 FieldID 不等于 10142 但仍然没有看到正确结果的另一个选择中进行过滤。

这是我的查询:

SELECT DISTINCT id
INTO #TEMP
FROM tbl_WorkItemCustomLatest
ORDER BY ID ASC

SELECT a.*
FROM #TEMP
INNER JOIN dbo.tbl_WorkItemCustomLatest AS A ON #TEMP.id = A.id
WHERE A.FieldID != 10142
ORDER BY A.ID ASC

非常感谢任何帮助。

【问题讨论】:

您的预期输出是什么?此外,将图像转换为文本只需以文本格式复制并粘贴您想要包含在问题中的内容。不能出于编辑目的复制图像。 您好 Suraj,我正在尝试获取仅显示 ID 列在其 FieldID 列中没有任何值的行的输出。例如,我只想要 ID 634 的行的屏幕截图,因为它没有与 FieldID 10142 匹配的值,如果这有意义的话?问候伊恩 【参考方案1】:

NOT EXISTS:

select t.* from tbl_WorkItemCustomLatest t
where not exists (
  select 1 from tbl_WorkItemCustomLatest
  where id = t.id and FieldId = 10142
)

NOT IN:

select * from tbl_WorkItemCustomLatest 
where id not in (select id from tbl_WorkItemCustomLatest where FieldId = 10142)

【讨论】:

谢谢 Forpas 正是我所需要的!

以上是关于SQL删除存在值的行和具有该值的后续列的主要内容,如果未能解决你的问题,请参考以下文章

如何更改我的 sql 查询,以便删除列中具有某些值的行 [重复]

PostgreSQL,删除具有重新编号列值的行

在为选定列分配变量后,如何删除一些具有 NA 值的行?

删除特定列中具有空白值的行

SQLITE3 - 删除具有相同值的多个列的行

VBA比较两个列表并删除不同列中具有重复值的行