动态 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 = '*'
.
上的条件
我有 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 = '*'
.