выбрать из значений в MySQL - PullRequest
13 голосов
/ 09 февраля 2012

Каким будет MySQL способ сделать выбор из значений?

select c from (values (1), (2), (3)) as t(c);

Идея состоит в том, чтобы иметь возможность сделать что-то вроде этого:

select * from table, (values (1), (2), (3)) as temp(c) where ...;

Для справки, здесьтакое документ Postgres: http://www.postgresql.org/docs/9.1/static/sql-values.html

Ответы [ 2 ]

14 голосов
/ 09 февраля 2012

По предоставленной вами ссылке:

ЗНАЧЕНИЯ (1, «один»), (2, «два»), (3, «три»);
Это вернеттаблица из двух столбцов и трех строк.Фактически это эквивалентно:
SELECT 1 AS column1, 'one' AS column2
UNION ALL
SELECT 2, 'two'
UNION ALL
SELECT 3, 'three';

Так что вам нужно

select * from 
table1,
(
   SELECT 1 AS val
   UNION ALL
   SELECT 2
   UNION ALL 
   SELECT 3 
)b
3 голосов
/ 31 января 2017

Это еще один способ обойти отсутствие поддержки WITH в MySQL:

create temporary table tmp (c int);

insert into tmp (c)
values (1), (2), (3);

select * from tmp;
...