2015-05-14 153 views
0

嗨那里我试图执行一个查询,但似乎无法做到正确。SQL select语句在where子句中

SELECT * 
FROM table 
WHERE id IN (SELECT * 
       FROM table 
       WHERE description = 'A') 
AND description = 'B' 

上面就是我有查询时,select * from table where description = A按预期工作当单独跑我只是需要让where子句来工作,所以我可以看到,有A和B

的说明,任何ID
+1

描述不能同时'A'和'B'。只是'A'或'B'。 – Darian

+0

问题是可能有多个相同ID的记录,并且它们可能包含A或B的描述,所以嵌套的select语句只能找到具有A描述的id,然后我想要这些id并找到多少他们也有B的描述。我认为@SimonPJ解决方案应该为我做这个? – user3456401

+0

好的,我明白了。我虽然身份证是独一无二的。我认为@SimonPJ解决方案是正确的答案。 – Darian

回答

3

你会从子查询中获得多个列时,我以为你只是想在id列:

SELECT * 
FROM table 
WHERE id IN (SELECT id 
      FROM table 
      WHERE description = 'A') 
    AND description = 'B' 
+0

这似乎正是我所追求的!非常感谢 – user3456401

2

无需选择在where子句中

SELECT * 
FROM table 
WHERE id IN ('A', 'B') 
+0

我认为,OP的查询将获取映射到'A'和'B'的'id'。但在你的情况下,它将获取映射到'A'或'B'的ID。该查询中的错误是子查询中的select *'。 –

0

它应该是:

select * from table where id in (select id from table where description = 'A') and description = 'B' 

但此查询会给你零结果作为选择的记录与描述=“A”和描述=“B”,如果你想用的任何描述记录A或B,那么你应该写为

select * from table where description = 'A' or description = 'B' 

select * from table where description in ('A','B') 
2

试试这个:

SELECT * 
FROM table 
WHERE description IN ('A', 'B')