我要执行的操作是将一个表的行复制到另一个表。我有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;
答案 0 :(得分:3)
SQL表表示无序集。没有所谓的“撤消”订单。
您可以将值分配给自动递增的列以指定特定的顺序。
如果要在发出查询时按特定顺序生成结果,则需要显式包括order by
。没有其他方法可以保证按特定顺序排列结果集。