2010-10-27 88 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'