2010-10-27 55 views
0

我的表看起來像這樣:SQL SELECT查詢的名稱 - 值對

ID NAME  VALUE 
1 home  San Jose 
1 visitor New Jersey 
2 home  Chicago 
2 visitor Los Angeles 
3 home  Tampa Bay 
3 visitor Pittsburgh 
4 home  Montreal 
4 visitor N.Y. Islanders 
5 home  Montreal 
5 visitor N.Y. Islanders 
6 home  Carolina 
6 visitor Montreal 
7 home  Montreal 
7 visitor Atlanta  

我怎麼能想出一個SQL查詢,將選擇所有的ID,要麼有主場=蒙特利爾或訪問者=蒙特利爾而不是其他標識。所以在這種情況下,我們會盡快4,5,6,7

+5

看起來像功課.. – pavanred 2010-10-27 18:12:01

回答

3
SELECT 
    ID 
FROM Table 
WHERE 
    (Name = 'home' and Value = 'Montreal') 
    OR 
    (Name = 'visitor' and Value = 'Montreal') 
0
Select ID from Table where Name = 'home' and Value = 'Montreal' 
UNION ALL 
Select ID from Table where Name = 'visitor' and Value = 'Montreal' 
+0

+1以抵消-1。這不是一個最佳的解決方案,但它應該工作。 – 2010-10-28 11:20:15

+0

是的,這不是最佳的。在提交我輸入的查詢之前,John Hartsock提供了類似的答案。所以,我只是提供了另一種選擇。 – pavanred 2010-10-28 11:35:00

5

如果「家」和「先生」是唯一的選擇,這似乎在像一個情況是真實的例如給你到哪兒去兩個體育隊,然後簡單地之間有遊戲:

select ID 
    from YourTable 
    where Value = 'Montreal' 
3

假設name列包含其他值不只是「家」和「遊客」 - 這是最好要明確,以確保您得到你想要的記錄:

SELECT t.id 
    FROM YOUR_TABLE t 
WHERE t.name IN ('home', 'visitor') 
    AND t.value = 'Montreal' 

...否則,有包括在查詢中的過濾沒有價值:

SELECT t.id 
    FROM YOUR_TABLE t 
WHERE t.value = 'Montreal'