Виртуальная таблица с фиксированными значениями mysql - PullRequest
0 голосов
/ 09 мая 2018

Возможно ли иметь виртуальную таблицу с фиксированными значениями?

У меня следующий запрос

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.?;

даты будут одинаковыми.

Я хочу получить ноль, если нет записей с этими датами.

Но мне нужен псевдоним в вопросительном знаке.

Или, может быть, мне нужно что-то еще.

Как мне создать виртуальную таблицу, подобную этой, просто чтобы использовать ее в соединении.

-- 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");

# What I want to show is
#
# date1      date2
# 2018-01-02 null
# 2018-01-04 null
# 2018-01-06 2018-01-06 

Поскольку нет информации для первых двух дат

1 Ответ

0 голосов
/ 09 мая 2018

Вы можете сделать это:

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;

Это отвечает на ваш конкретный вопрос. Я не уверен, что вы действительно хотите сделать, но это довольно распространенная техника запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...