mysql - 如何以相反的顺序插入行?

标签 mysql sql insert row sql-insert

我想做的是将一个表的行复制到另一个表。我有 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/

相关文章:

具有顺序过滤条件的 MySQL SELECT 查询

class - 最佳实践 : How to Insert into Multiple Tables Through the Business Layer and Data Layer?

c# - 如何将文件路径从我的代码中取出并放入 mysql 的插入语句中?

MySQL INSERT ... SET ... ON DUPLICATE KEY 失败...困惑

php - 将 php 数组插入 mySql

php - Mysql Select 带有动态文本字段

php - 我应该一直进行MySQL错误检查吗?

php - 多查询和结果连接

mysql - 将包含数组的 SQL 字段拆分为新表/行

sql - 这种表结构最具扩展性的设计是什么