我有一张表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错误:
只有一个结果允许SELECT作为表达式的一部分
我哪里错了?如果从我的代码中看不出来 - 我对数据库编程比较陌生。
由于
答案 0 :(得分: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');
答案 1 :(得分:1)
SELECT * FROM Studies WHERE (Name = 'Test') AND ID IN (SELECT ID FROM Studies WHERE ID = '2' OR ID = '3' OR ID = '7');