我有一个表Studies,我执行SELECT.
然后我需要在返回的记录集上执行进一步的SELECT.我试过这个(简化为了清晰):
SELECT * FROM Studies
WHERE Id = '2' OR Id = '3' OR Id = '7';
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM Studies
WHERE (Name = 'Test')
AND Id IN (SELECT * FROM Studies WHERE Id = '2' OR Id = '3' OR Id = '7');
Run Code Online (Sandbox Code Playgroud)
但我不断收到以下SQL错误:
只有一个结果允许SELECT作为表达式的一部分
我哪里错了?如果从我的代码中看不出来 - 我对数据库编程比较陌生.
谢谢
Jac*_*cob 13
您不能在IN (...)子查询中返回多个列.您必须将*(返回所有列)更改为ID.但是您的查询不需要子查询,您只需将ID添加到第一个查询即可.由于性能原因,您通常希望尽可能避免使用子查询.
SELECT *
FROM Studies
WHERE Name = 'Test'
AND ID IN ('2', '3','7')
Run Code Online (Sandbox Code Playgroud)
或者如果你想保留你的结构:
SELECT *
FROM Studies
WHERE (Name = 'Test')
AND ID IN (SELECT ID FROM Studies WHERE ID = '2' OR ID = '3' OR ID = '7');
Run Code Online (Sandbox Code Playgroud)