【发布时间】:2018-05-15 14:35:24
【问题描述】:
我有两个表,tableA 有一个记录列表,tableB 有限制(如果有的话)。如果tableB 中有记录,或者如果tableB 为空,我如何加入基本上是inner join 的表?
即:
tableA
id | name
1 | val1
2 | val2
tableB (with restrictions)
id | name | userID
1 | val1 | 123
OR tableB (no restrictions)
id | name | userID
这可能吗?我在下面的尝试:
SELECT a.*
FROM tableA a
INNER JOIN (CASE WHEN select 1 from tableB = 1 THEN tableB ELSE tableA END) b
ON a.id = b.id
where userID = XXX
EDIT:tableB上有一个检查
【问题讨论】:
-
你的数据库引擎是什么?
-
我正在使用 SQL 服务器
-
您正在寻找外连接
-
这不就是左连接吗,我还缺什么?
-
这不是左连接,因为
tableB可能没有行。如果没有行则查询失败
标签: sql sql-server join case