具有固定值的虚拟表mysql

时间:2018-05-09 17:55:50

标签: mysql sql

是否可以使用具有固定值的虚拟表?

我有下一个查询

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 

由于前两个日期没有信息

1 个答案:

答案 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;

这回答了您的具体问题。我不确定你真正想做什么,但这是一种非常常见的查询技术。