0

我的数据库目前有 2 列,我正在尝试返回第 1 列中不包含第 2 列中某个值的所有值:

例如:第 1 列有 9 位随机值,有时会重复。第 2 列有 4 个不同的选项;P1、P2、P3、P4。

我试图仅在第 1 列中显示第 2 列中没有 P4 值的值。如果它们没有 P4,那么我希望它们全部显示,但是一旦第 1 列值关联使用 P4,我不希望显示任何第 1 列值。此过程将继续遍历所有第 1 列值,直到第 1 列中显示的唯一值是没有与之关联的 P4 第 2 列值的值。

4

3 回答 3

2

你的意思是这样的?

SELECT *
FROM YOUR_TABLE
WHERE COLUMN1 NOT IN (
    SELECT COLUMN1
    FROM YOUR_TABLE
    WHERE COLUMN2 = 'P4'
)
于 2013-02-28T02:32:02.017 回答
0

这不就是

SELECT column1 FROM <table> WHERE column2 != 'P4'
于 2013-02-28T02:34:48.157 回答
0

这是一个查询示例,您在其中查看集合中的集合——即,column1 的值中的 column2 集合。对于这些查询,我更喜欢使用group byand :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
于 2013-02-28T02:35:14.620 回答