SQL使用相同的标识符获取多行中的值

时间:2015-07-28 18:44:24

标签: sql

例如,这是我对

的回应
select *
from x
where id = 1

结果:

ID    data  
1     mouse 
1     england
1     computer    

现在,我如何在英格兰国家搜索鼠标?我无法确定这一点:

AND data = 'mouse' 
AND data = 'england'

(如果可能的话,不要在查询中使用查询)

2 个答案:

答案 0 :(得分:1)

如果我理解正确的话,你就有了#34; set-within-sets"查询。您想要查找给定id的所有三个属性。为此,我建议使用group byhaving

select id
from x
where data in ('mouse', 'england')
group by id
having count(*) = 2;

答案 1 :(得分:1)

使用子查询来约束国家/地区。例如,这个数据

         ID DATA   
 ---------- --------
          1 computer 
          1 england  
          1 mouse    
          2 austria  
          2 computer 
          2 mouse
          3 mouse 
          3 mouse  

您首先只过滤属于英格兰的ID而不是 约束鼠标。

SELECT *
FROM test
WHERE id IN
  (SELECT id FROM test WHERE data = 'england'
  )
AND data = 'mouse'; 


         ID DATA   
 ---------- -------- 
          1 mouse