Многозапросный SQL-запрос - PullRequest
7 голосов
/ 20 июля 2011

У меня есть таблица 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, который является частью выражения


Куда я иду не так?Если это не видно из моего кода - я относительно новичок в программировании баз данных.

Спасибо

Ответы [ 2 ]

13 голосов
/ 20 июля 2011

Вы не можете вернуть более одного столбца в подзапросе IN (...).Вы должны изменить * (вернуть все столбцы) на 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 голос
/ 20 июля 2011
SELECT * FROM Studies WHERE (Name = 'Test') AND ID IN (SELECT ID FROM Studies WHERE ID = '2' OR ID = '3' OR ID = '7');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...