我有一张桌子
表-A
--------------------
Column_1 | Column_2
--------------------
10001 | 0.4
10002 | 0.5
我可以在不创建临时表或触发两个不同查询的情况下获得以下输出
Select Column_1, Column_2
from Table_A
where Column_1 in (10001, 10002, 10003)
如下面的输出
--------------------
Column_1 | Column_2
--------------------
10001 | 0.4
10002 | 0.5
10003 | null
答案 0 :(得分:3)
使用LEFT JOIN
& Table valued constructor
SELECT Tc.Column_1,
A.Column_2
FROM (VALUES(10001),
(10002),
(10003)) tc(Column_1)
LEFT JOIN Table_A a
ON tc.Column_1 = A.Column_1
如果您使用的是Mysql
SELECT Tc.Column_1,
A.Column_2
FROM (SELECT 10001 Column_1
UNION ALL
SELECT 10002
UNION ALL
SELECT 10003) tc
LEFT JOIN Table_A a
ON tc.Column_1 = A.Column_1
您可能需要更改当前方法的输入格式
答案 1 :(得分:2)
不确定您是否将内联视图视为临时表;我没有。
SQL无法创建数据,只能选择存在的数据。话虽这么说,我们可以创建一个包含所需数据的内联视图,然后从中进行选择。
SELECT tmp.Col1, A.Column_2
FROM (SELECT 10001 as col1 union all
SELECT 10002 union all
SELECT 10003) tmp
LEFT JOIN Table_A A
on tmp.col1 = A.Column_1