Я пишу что-то в этом роде:
select fielda,fieldb,
(select sum(field1)-sum(field2) as fieldc
from tableb
where fieldid = list_of_ids[i])
from tablea
where fieldid in (list_of_ids);
В подзапросе я хотел бы использовать значение из внешнего предложения where. Итак, если list_of_ids равен 123 456 789, fieldid в подзапросе будет 123, второй 456 и т. д. Возможно ли это?
Postgres, но ответ Пелина работал


Вам просто нужно использовать ta.fieldid вместо list_of_ids[i]
select ta.fielda,ta.fieldb,
(select sum(tb.field1)-sum(tb.field2) as fieldc
from tableb tb
where tb.fieldid = ta.fieldid )
from tablea ta
where ta.fieldid in (list_of_ids);
попробуйте этот код:
select ta.fielda,ta.fieldb,
(select sum(field1)-sum(field2) as fieldc
from tableb tb
where tb.fieldid = ta.fieldid )
from tablea ta
where ta.fieldid in (list_of_ids);
Подзапрос привязывается к отдельной записи во внешнем запросе.
select fielda,fieldb,
(select sum(field1)-sum(field2) as fieldc
from tableb
where tableb.fieldid = tablea.fieldid)
from tablea
where tablea.fieldid in (list_of_ids);
Просто используя простой оператор сравнения для корреляции вашего подзапроса с вашим внешним запросом, ваш подзапрос также будет сравниваться с любыми идентификаторами полей, найденными внешним запросом.
Какой СУБД продукт вы используете? «SQL» - это просто язык запросов, а не имя конкретного продукта базы данных. Добавьте тег для продукта базы данных, который вы используете
postgresql,oracle,sql-server,db2, ...