是否可以使用具有固定值的虚拟表?
我有下一个查询
SELECT
d1
FROM
(SELECT DISTINCT(date) AS d1
FROM table1
WHERE date IN ("2018-01-01","2018-05-04")
) t1
RIGHT JOIN
(SELECT "2018-01-01","2018-05-04" ) t2
ON t1.d1=t2.?;
日期将是相同的。
如果没有包含这些日期的条目,我想得到null。
但我需要问号中的别名。
或许我需要别的东西。
我如何创建像这样的虚拟表,只是在连接中使用它。
-- Temp table --
value
2018-01-01
2018-05-04
我想避免任何CREATE(临时表)。
因为使用SELECT 1,2,3
我得到水平值而不是垂直值。
也许这个例子解释得更好。 http://sqlfiddle.com/#!9/49f04/4
从日期中选择日期,日期(" 2018-01-02"," 2018-01-04"," 2018-01-06&#34 );
# What I want to show is
#
# date1 date2
# 2018-01-02 null
# 2018-01-04 null
# 2018-01-06 2018-01-06
由于前两个日期没有信息
答案 0 :(得分:2)
你可以这样做:
SELECT . . .
FROM (SELECT '2018-01-01' as dte UNION ALL
SELECT '2018-05-04' as dte
) d LEFT JOIN
(SELECT DISTINCT date AS d1 FROM table1 WHERE date IN ("2018-01-01","2018-05-04")) t1
ON t1.d1 = d.dte;
这回答了您的具体问题。我不确定你真正想做什么,但这是一种非常常见的查询技术。