MySQL - ORDER BY оценивает в В ()

У меня недавно была та же проблема - я хотел использовать «select into», хотел, чтобы все столбцы в целевой таблице были обнуляемыми и amp; повторяемый подход, при котором мне не нужно было знать имена полей в исходной таблице.

select *
into dbo.I_Data
from
  (select 1[Z_1]) A
  full join (select null[Z_2], * from dbo.S_Data) B on A.Z_1 = B.Z_2

где dbo.S_Data - таблица данных источника, а [Z_ 1] & amp; [Z _2] - два фиктивных столбца, используемые для объединения

Затем для очистки:

(a) Удалить строку нулей

delete dbo.I_Data where [Z_1] = 1

( б) Удалить фиктивные поля:

alter table dbo.I_Data 
  drop column [Z_1], [Z_2]

С уважением.

101
задан Donald Duck 27 November 2017 в 22:40
поделиться

4 ответа

SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')

Функция FIELD возвращает положение первой строки в оставшемся списке строк.

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

215
ответ дан 24 November 2019 в 04:38
поделиться

Другой вариант отсюда: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html

select * 
from tablename 
order by priority='High' DESC, priority='Medium' DESC, priority='Low" DESC;

Итак, в вашем случае (непроверенный) будет

SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY name = 'B', name = 'A', name = 'D', name =  'E', name = 'C';

В зависимости от того, что вы делаете. находил это немного странным, но всегда заставлял его работать, немного поиграв с ним.

28
ответ дан 24 November 2019 в 04:38
поделиться

Попробуйте что-нибудь вроде

... ORDER BY (CASE NAME WHEN 'B' THEN 0 WHEN 'A' THEN 1 WHEN ...
4
ответ дан 24 November 2019 в 04:38
поделиться

Вам нужен другой столбец (числовой) в вашей таблице, в котором вы указываете порядок сортировки. Предложение IN работает по-другому.

B - 1
A - 2
D - 3
E - 4
C - 5
2
ответ дан 24 November 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: