Sql 动态连接条件
我有一张桌子:Sql 动态连接条件,sql,sql-server,sql-server-2012,inner-join,Sql,Sql Server,Sql Server 2012,Inner Join,我有一张桌子: Tbl1 +----+------+ | id | type | +----+------+ | 1 | 11 | | 1 | 22 | | 2 | * | +----+------+ Tbl2 +----+------+------+ | id | type | name | +----+------+------+ | 1 | 11 | AAA | | 1 | 22 | BBB | | 2 | 11 | CCC | | 2
Tbl1
+----+------+
| id | type |
+----+------+
| 1 | 11 |
| 1 | 22 |
| 2 | * |
+----+------+
Tbl2
+----+------+------+
| id | type | name |
+----+------+------+
| 1 | 11 | AAA |
| 1 | 22 | BBB |
| 2 | 11 | CCC |
| 2 | 22 | DDD |
+----+------+------+
我想在id和类型上加入。但是如果type='*'我想得到所有类型。
如何加入Tbl1和Tbl2以实现此结果
比如:
SELECT a.* FROM Tbl2 a
INNER JOIN Tbl1 b ON a.id = b.id
AND a.type = b.type ?? (i want use case statement to achieve this result)
result
+----+------+------+
| id | type | name |
+----+------+------+
| 1 | 11 | AAA |
| 1 | 22 | BBB |
| 2 | 11 | CCC |
| 2 | 22 | DDD |
+----+------+------+
您可以在
on
子句中包含该条件:
SELECT a.*
FROM Tbl2 a INNER JOIN
Tbl1 b
ON a.id = b.id AND
(a.type = b.type OR a.type = '*' OR b.type = '*');
不清楚您是想将通配符应用于两个表还是只应用于一个表。如果有,则删除
a.type='*'
上的条件,然后尝试。。。a、 type=当a.type='*'然后'*'否则b.type结束时的情况