我想做的是将一个表的行复制到另一个表。我有 2 种选择可以按直接顺序或反向顺序复制它们。我直接订购没有问题。但我无法以相反的顺序插入它们。我正在尝试使用 ORDER BY DESC 来执行此操作,但 DESC 不适用于子查询。所以我用声明来做。 SELECT 按 PRIMARY KEY 以相反的顺序返回我。但是数据库 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;
最佳答案
SQL 表表示无序 集。没有所谓的“颠倒”顺序。
您可以将值分配给自动递增的列以指定特定的顺序。
如果您希望在发出查询时按特定顺序排列结果,则需要明确包含一个order by
。没有其他方法可以保证结果集按特定顺序排列。
关于mysql - 如何以相反的顺序插入行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54516132/