基于2列中的值在SQL中搜索

时间:2013-02-28 02:25:45

标签: sql

我目前有两列用于我的数据库,我试图在第1列中返回第二列中不包含特定值的所有值:

ex:第1列有9位随机值,有时会重复。第2列有4种不同的选择; P1,P2,P3,P4。

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

3 个答案:

答案 0 :(得分:2)

你的意思是这样的吗?

SELECT *
FROM YOUR_TABLE
WHERE COLUMN1 NOT IN (
    SELECT COLUMN1
    FROM YOUR_TABLE
    WHERE COLUMN2 = 'P4'
)

答案 1 :(得分:0)

这不会是

SELECT column1 FROM <table> WHERE column2 != 'P4'

答案 2 :(得分:0)

这是一个查询示例,您可以在其中查看集合中的集合 - 即column1值中的column2集合。我更喜欢将group byhaving用于这些查询:

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