我現在有2列我的數據庫,我試圖返回在第1列不兩列含有一定價值的所有值:搜索在SQL基於值2列
例如:第1列有9位隨機值,有時會重複。第2列有4種不同的選項; P1,P2,P3,P4。
我試圖只顯示列1中沒有值P4的值在列2中的值。如果他們沒有P4,那麼我希望他們都顯示,但一旦列1值與P4相關聯,我不希望顯示任何第1列值。此過程將繼續貫穿所有第1列值,直到列1中顯示的唯一值是沒有與它們關聯的P4列2值的值。
我現在有2列我的數據庫,我試圖返回在第1列不兩列含有一定價值的所有值:搜索在SQL基於值2列
例如:第1列有9位隨機值,有時會重複。第2列有4種不同的選項; P1,P2,P3,P4。
我試圖只顯示列1中沒有值P4的值在列2中的值。如果他們沒有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'
這是你在套中尋找集的查詢的一個例子 - 也就是說,套COLUMN2的列1的值範圍內。我更喜歡使用group by
和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-28 02:45:57
這正是我的意思。非常感謝 – 2013-02-28 02:44:05