我需要创建新表并从第二个表复制数据。之后,按字段名称排序,但是此重新排序不起作用。示例:创建新表并从第二个表(pizzaName字段= a,b,c)复制数据,然后按大小写/时间对表重新排序。这是我的代码:
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;
答案 0 :(得分:0)
您需要将其分为两部分。
SQL标准没有指定数据在数据库中的存储顺序-从逻辑上讲是无关紧要的(尽管实际上,聚集索引确实会影响顺序)。除了创建聚簇索引之外,没有其他方法可以指定存储数据的顺序,但这并不是普遍支持的。
可以做的是指定查询时检索数据的顺序-这就是“ order by”子句的作用。
因此,第1步是创建表的副本(不确定为什么要这样做,但假设需要这样做):
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
第2步:从副本中检索数据:
SELECT * FROM secondTable ORDER BY
CASE
WHEN pizzaName = 'c' THEN 1
WHEN pizzaName = 'a' THEN 2
WHEN pizzaName = 'b' THEN 3