Использование содержимого столбца из таблицы A в операторе WHERE таблицы B - PullRequest
0 голосов
/ 18 сентября 2018

Я не смог понять, как это сделать. Это может быть невыполнимо, или эксперты здесь могут сказать, что это очень плохой способ сделать это.

Скажем, у меня есть tableA, у которого есть список questions Я хочу попросить мой набор данных. Мой оператор SELECT настроен с пустым оператором WHERE. Я хочу прочитать каждую строку tableA и использовать условия, перечисленные в ней в моем WHERE утверждении.

Как мне ввести результаты из таблицы A, по одной строке за раз, чтобы они отображались и использовались в операторе SELECT / WHERE моего основного SQL?

Имеет ли это смысл?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы ищете Динамический SQL .

Предположим, у вас есть таблица tableA с условиями, где:

create table tableA (condition varchar(max));
insert into tableA values ('columnB1 > 0'), ('columnB2 <> ''Me''');

И tableB,Таблица, к которой мы будем применять эти условия:

create table tableB (columnB1 int, columnB2 varchar(10));
insert into tableB values (-1, 'Not me'), (1, 'Me');

Теперь вы можете использовать динамический SQL, он создаст отдельный запрос для каждой строки в @tableA:

declare @sql varchar(max) = '';
select @sql = @sql + ' select * from MY_DATABASE.dbo.tableA where ' + condition
from tableA

exec(@sql)
0 голосов
/ 18 сентября 2018

Насколько я понимаю, вы также можете использовать вложенный выбор, первый выбор написать запрос для одной строки и после снова выбрать из него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...