我提取了大约1000行,将其中的项目分解为各个组成部分,我试图仅选择项目行的描述字段中都不包含删除单词的项目:
在这种情况下,我只想从表格中选择项目2和4。
我已经试过了,但就目前而言,我只能选择其中一个描述未包含单词的每个项目的一部分,但我仍然可以得到其余项目的详细信息,这是不正确的。
答案 0 :(得分:2)
您可以使用not exists
进行过滤:
select t.*
from mytable t
where not exists (
select 1
from mytable t1
where
t1.ItemNo = t.ItemNo
and 'Deleted' in (t1.ItemDescription, t1.PacketDescription, t1.ComponentDescription)
)
在(ItemNo, ItemDescription, PacketDescription, ComponentDescription)
上有一个索引,它应该具有良好的性能。
或者,在MySQL 8.0中,您可以做一个窗口求和:
select *
from (
select
t.*,
sum('Deleted' in (ItemDescription, PacketDescription, ComponentDescription)
over(partition by ItemNo) sm
from mytable t
)
) t
where sm = 0