我的数据库目前有 2 列,我正在尝试返回第 1 列中不包含第 2 列中某个值的所有值:
例如:第 1 列有 9 位随机值,有时会重复。第 2 列有 4 个不同的选项;P1、P2、P3、P4。
我试图仅在第 1 列中显示第 2 列中没有 P4 值的值。如果它们没有 P4,那么我希望它们全部显示,但是一旦第 1 列值关联使用 P4,我不希望显示任何第 1 列值。此过程将继续遍历所有第 1 列值,直到第 1 列中显示的唯一值是没有与之关联的 P4 第 2 列值的值。
我的数据库目前有 2 列,我正在尝试返回第 1 列中不包含第 2 列中某个值的所有值:
例如:第 1 列有 9 位随机值,有时会重复。第 2 列有 4 个不同的选项;P1、P2、P3、P4。
我试图仅在第 1 列中显示第 2 列中没有 P4 值的值。如果它们没有 P4,那么我希望它们全部显示,但是一旦第 1 列值关联使用 P4,我不希望显示任何第 1 列值。此过程将继续遍历所有第 1 列值,直到第 1 列中显示的唯一值是没有与之关联的 P4 第 2 列值的值。
你的意思是这样的?
SELECT *
FROM YOUR_TABLE
WHERE COLUMN1 NOT IN (
SELECT COLUMN1
FROM YOUR_TABLE
WHERE COLUMN2 = 'P4'
)
这不就是
SELECT column1 FROM <table> WHERE column2 != 'P4'
这是一个查询示例,您在其中查看集合中的集合——即,column1 的值中的 column2 集合。对于这些查询,我更喜欢使用group by
and :having
select column1
from t
group by column1
having sum(case when column2 = 'P4' then 1 else 0 end) = 0
要获取所有值,您将连接回原始表:
select t.*
from t join
(select column1
from t
group by column1
having sum(case when column2 = 'P4' then 1 else 0 end) = 0
) c1
on t.column1 = c1.column1