动态 JOIN 条件

Dynamic JOIN condition

我有 table:

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 = '*'.

上的条件