как выбрать все данные, какой же идентификатор, используя где в - PullRequest
1 голос
/ 30 сентября 2019
table A

id value
1    a
2    b
3    c

У меня есть таблица, как указано выше.

и мой sql-запрос

'select * from A как where a.id в (1,3,2,3,3), 1) упорядочить по полю (a.id, 1,3,2,3,3,1) '

результат равен

id value
1    a
3    c
2    b

, но я хочу выбрать

id value
1    a
3    c
2    b
3    c
3    c
1    a

вот так ..

как мне это сделать?

Ответы [ 3 ]

1 голос
/ 30 сентября 2019

Вы можете объединить вашу таблицу с производной таблицей, которая содержит список id s для выбора и последовательность, например:

SELECT a.* 
FROM tableA a
INNER JOIN (
    SELECT 1 seq, 1 id
    UNION ALL SELECT 2, 3
    UNION ALL SELECT 3, 2
    UNION ALL SELECT 4, 3
    UNION ALL SELECT 5, 3
    UNION ALL SELECT 6, 1
) x ON x.id = a.id
ORDER BY x.seq

С этим решением вы можете заказать, как вы хотите, без фактическогоотображение столбца заказа в наборе результатов.

0 голосов
/ 30 сентября 2019

Вы можете использовать оператор «ИЛИ» здесь для вашего запроса. Это даст вам весь результат с идентификатором имеет значение 1 или 2 или 3.

Так вот ваш выбор, как показано ниже.

Выберите * из A, где id = 1 ИЛИ id =2 Или id = 3 заказа по id

0 голосов
/ 30 сентября 2019

Ближе всего к тому, что вы хотите, без использования динамического SQL, был бы запрос на объединение:

SELECT id, value, 1 AS pos FROM A WHERE id = 1 UNION ALL
SELECT id, value, 2 FROM A WHERE id = 3 UNION ALL
SELECT id, value, 3 FROM A WHERE id = 2 UNION ALL
SELECT id, value, 4 FROM A WHERE id = 3 UNION ALL
SELECT id, value, 5 FROM A WHERE id = 3 UNION ALL
SELECT id, value, 6 FROM A WHERE id = 1
ORDER BY pos;

Примечание: вам не нужен подзапрос для создания требуемого порядка.

Я подозреваю, что вы ищете способ сгенерировать некоторое количество записей в наборе результатов на основе состояния, содержащегося в таблице. SQL является декларативным языком и не очень хорош в создании новых данных. Ваше бизнес-приложение обычно это делает. Таким образом, многословность вышеприведенного запроса на объединение возникает из-за того, что SQL не имеет четких формулировок при генерации данных.

...