SQL多行子查询

7

我有一个名为Studies的表格,需要进行SELECT操作。

然后我需要在返回的记录集上执行进一步的SELECT。我尝试了以下代码(为了清晰起见进行了简化):

SELECT * FROM Studies
WHERE Id = '2' OR Id = '3' OR Id = '7';

SELECT * FROM Studies
WHERE (Name = 'Test')
  AND Id IN (SELECT * FROM Studies WHERE Id = '2' OR Id = '3' OR Id = '7');

但是我一直收到以下SQL错误:

只允许一个结果作为表达式的一部分进行选择


我错在哪里了?如果从我的代码中无法看出来 - 我对数据库编程相对较新。

谢谢

2个回答

13

IN(...) 子查询中,你无法返回多个列。你需要将 *(返回所有列)更改为 ID。但是你的查询不需要子查询,你可以将ID直接添加到第一个查询中。通常情况下,请尽可能避免使用子查询以提高性能。

SELECT * 
FROM Studies 
WHERE Name = 'Test' 
AND ID IN ('2', '3','7')

或者如果您想保持原来的结构:

SELECT * 
FROM Studies 
WHERE (Name = 'Test') 
AND ID IN (SELECT ID FROM Studies WHERE ID = '2' OR ID = '3' OR ID = '7');

无法在 IN (...) 子查询中返回多个列。谢谢。 - Joaquin Iurchuk

1
SELECT * FROM Studies WHERE (Name = 'Test') AND ID IN (SELECT ID FROM Studies WHERE ID = '2' OR ID = '3' OR ID = '7');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接