假设我们有这样的表格“字母”:
a | b
-----
0 | 0
0 | 1
1 | 0
1 | 1
Run Code Online (Sandbox Code Playgroud)
以及以下选择语句:
SELECT val1, val2, x.a. val3
FROM table1,
table2,
(SELECT a
FROM letters
WHERE a=b
AND a=0) x,
table3
WHERE table1.val1 = table2.val1
AND table1.val2 = table3.val3
Run Code Online (Sandbox Code Playgroud)
我需要嵌入的 SELECT 语句 (x) 来返回:
0
NULL
NULL
NULL
Run Code Online (Sandbox Code Playgroud)
而不是当前返回的是
0
Run Code Online (Sandbox Code Playgroud)
然后我希望能够在大的 SELECT 语句中使用它。我希望这是有道理的!
有几种方法可以解决这个问题;
微不足道,使用CASE语句;
SELECT
CASE
WHEN a = b AND a = 0 THEN a
ELSE NULL
END
FROM x
Run Code Online (Sandbox Code Playgroud)
返回:
0
NULL
NULL
NULL
Run Code Online (Sandbox Code Playgroud)
使用左连接:
SELECT X1.a
FROM x
LEFT JOIN (SELECT a, b FROM x WHERE a = b AND a = 0) AS X1 ON x.a = X1.a AND x.b = X1.b
Run Code Online (Sandbox Code Playgroud)
返回:
0
NULL
NULL
NULL
Run Code Online (Sandbox Code Playgroud)
aar*_*bor -3
如果您希望在内部选择中返回多于一列,则还需要在内部选择中指定这些列...
(SELECT a, NULL 'colname1', NULL 'colname2'
FROM letters
WHERE a=b
AND a=0) x,
Run Code Online (Sandbox Code Playgroud)
您可以使用 x.colname 访问这些列
如果列还可以具有除 NULL 之外的值,则只需添加正确的联接并像普通 select 语句一样返回列值。