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删除存在值的行和具有该值的后续列的主要内容,如果未能解决你的问题,请参考以下文章