在表B的WHERE语句中使用表A的列内容

时间:2018-09-18 04:21:45

标签: sql sql-server tsql

我还无法弄清楚该怎么做。这可能不可行,或者这里的专家可能说这是这样做的非常不好的方法。

说我有tableA,其中有一个我想询问的数据集的questions列表。我的SELECT语句设置为空的WHERE语句。我想阅读tableA的每一行,并使用我的WHERE语句中列出的条件。

如何从表A一次引入一行结果,以便在我的主SQL的SELECT / WHERE语句中显示和使用这些结果?

这有意义吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

您正在寻找Dynamic 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)

答案 1 :(得分:0)

据我了解,您还可以使用嵌套选择,首先选择写一行查询,然后再从中选择查询。