Как вставить строки в обратном порядке? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь скопировать строки из одной таблицы в другую.У меня есть 2 варианта, чтобы скопировать их в прямом или обратном порядке.У меня нет проблем с прямым заказом.Но я не мог вставить их в обратном порядке.Я пытаюсь сделать это с ORDER BY DESC, но DESC не работает с подзапросами.Так что я делаю это с заявлением.И SELECT возвращает меня в обратном порядке по ПЕРВИЧНОМУ КЛЮЧУ.Но данные в БД my_db_copy вставляются в прямом порядке.Как я могу вставить их в обратном порядке?

set @Query1=Concat ('INSERT INTO my_db_copy.test1 SELECT * FROM my_db.test1 
ORDER BY ', (   SELECT COLUMN_NAME
FROM information_schema.COLUMNS
WHERE (TABLE_SCHEMA = 'my_db')
  AND (TABLE_NAME = 'test1')
  AND (COLUMN_KEY = 'PRI')), ' DESC');
  PREPARE stmt FROM @Query1;
  EXECUTE stmt;    

1 Ответ

0 голосов
/ 04 февраля 2019

Таблицы SQL представляют неупорядоченные наборы.Не существует такой вещи, как «реверсирование» порядка.

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

Если вам нужны результатыв определенном порядке, когда вы отправляете запрос, вам нужно явно включить order by.Нет другого способа гарантировать набор результатов в определенном порядке.

...