使用连接进行过滤,其中 null 为通配符

问题描述 投票:0回答:1

我正在 SQL Server 中编写查询,我有一个任务来过滤第一个表:

| c1  c2   c3   c4  |
|-------------------|
| 40  161  425  702 |
| 40  161  719  791 |
| 45  161  719  791 |
| 45  700  719  791 |
| 47  700  719  791 |

第二个表中的数据:

| c1 | c2   | c3   | c4   |
|----|------|------|------|
| 40 | NULL | NULL | NULL |
| 45 | 161  | NULL | NULL |

问题是,第二个表中的数据有“通配符”——如果列中有 NULL,则它可以是任何整数。长话短说,过滤表应该看起来像这样:

| c1 | c2  | c3  | c4  |
|----|-----|-----|-----|
| 45 | 700 | 719 | 791 |
| 47 | 700 | 719 | 791 |

我可能最终会找到用循环过滤它的方法,但它似乎根本没有优化。

sql sql-server join filtering sql-server-2016
1个回答
-3
投票

我正在用 MSSQL 编写脚本,我有一个任务来过滤第一个表:

c1 c2 c3 c4 40 161 425 702 40 161 719 791 45 161 719 791 45 700 719 791 47 700 719 791

第二个表中的数据:

c1 c2 c3 c4 40 空 空 空 45 161 空 空

问题是,第二个表中的数据有“通配符”——如果列中有 NULL,则它可以是任何整数。长话短说,过滤表应该看起来像这样:

© www.soinside.com 2019 - 2024. All rights reserved.