SQL select语句在where子句中
问题描述:
嗨那里我试图执行一个查询,但似乎无法做到正确。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列:
SELECT *
FROM table
WHERE id IN (SELECT id
FROM table
WHERE description = 'A')
AND description = 'B'
+0
这似乎正是我所追求的!非常感谢 – user3456401
答
无需选择在where子句中
SELECT *
FROM table
WHERE id IN ('A', 'B')
+0
我认为,OP的查询将获取映射到'A'和'B'的'id'。但在你的情况下,它将获取映射到'A'或'B'的ID。该查询中的错误是子查询中的select *'。 –
答
它应该是:
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')
答
试试这个:
SELECT *
FROM table
WHERE description IN ('A', 'B')
描述不能同时'A'和'B'。只是'A'或'B'。 – Darian
问题是可能有多个相同ID的记录,并且它们可能包含A或B的描述,所以嵌套的select语句只能找到具有A描述的id,然后我想要这些id并找到多少他们也有B的描述。我认为@SimonPJ解决方案应该为我做这个? – user3456401
好的,我明白了。我虽然身份证是独一无二的。我认为@SimonPJ解决方案是正确的答案。 – Darian