#sql #sql-server
#sql #sql-сервер
Вопрос:
Я хочу запросить таблицу с двумя параметрами в where condition, и оба параметра возвращаются из другого запроса.
Допустим, таблица t1 с column1 и column2, если я использую запрос select column1,column2 из t1, предположим, он возвращает 10 записей
Я хочу запросить что-то вроде приведенного ниже
for(int j=0;j<10;j )
{
select *
from t2
where t2.column1=t1.column1(jth position)
and t2.column2=t1.column2(jth position)
}
Комментарии:
1. Sql server 2012
2. спасибо за ваши усилия
Ответ №1:
Много способов сделать это. Мне нравится использовать встроенные запросы (SQL Server). Я не уверен, что вы можете сделать это на других языках SQL (я никогда не пробовал).
select *
from t2
where
t2.column1 = (select column1 from t1 where t1.id = j)
and t2.column2 = (select column2 from t1 where t1.id = j)
Пожалуйста, обратите внимание, что вы должны смотреть на это скорее как на псевдокод. Я составил столбец id
для примера, но дело в том, что вы делаете что-то вроде этого, ваши встроенные операторы select должны возвращать только один результат, а не массив результатов.
Если вы хотите работать с большими наборами условных данных, вы можете использовать joins
для выполнения того же самого:
select *
from t2
inner join t1 on t1.column1 = t2.column1
and t1.column2 = t2.column2
Надеюсь, это поможет.