我需要创建新表并从第二个表复制数据。在它之后按字段名排序,但这种重新排序不起作用。示例:我创建一个新表并从第二个表(pizzaname字段=a,b,c)复制数据,然后按case/when对表重新排序。这是我的密码:
CREATE TABLE secondTable (
pizzaName VARCHAR(20) NOT NULL,
lowSize TINYINT NOT NULL,
mediumSize TINYINT NOT NULL,
largeSize TINYINT NOT NULL,
PRIMARY KEY (pizzaName),
UNIQUE INDEX pizzaName_UNIQUE (pizzaName ASC) VISIBLE
) AS SELECT * FROM firstTable ORDER BY
CASE
WHEN pizzaName = 'c' THEN 1
WHEN pizzaName = 'a' THEN 2
WHEN pizzaName = 'b' THEN 3
END;
1条答案
按热度按时间ppcbkaq51#
你得把它一分为二。
sql标准没有指定数据在数据库中的存储顺序—这在逻辑上是不相关的(尽管在实践中,聚集索引确实会影响顺序)。除了创建聚集索引之外,没有其他方法可以指定数据的存储顺序,但这不是普遍支持的。
您可以指定查询时检索数据的顺序,这就是“orderby”子句的作用。
因此,步骤1是创建表的副本(不确定为什么要这样做,但假设需要这样做):
步骤2:从副本检索数据: