今天碰到个问题,需要用到自定义排序 ORDER BY FIELD (),但是排序后的结果跟我想象的有差异,贴出来让大佬们看看,帮我解惑一下。
CREATE TABLE platform
(
id
int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
name
varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '名称',
state
tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态',
created_time
datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
updated_time
datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
deleted_time
datetime(0) NULL DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (loan_id
) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '平台表' ROW_FORMAT = Dynamic;
-- Records of platform
INSERT INTO platform
VALUES (1, '范德萨范德萨', 1, '2019-07-09 10:28:49', '2019-07-09 18:17:44', NULL);
INSERT INTO platform
VALUES (2, '存存发达的存', 1, '2019-07-09 15:15:49', '2019-07-09 18:18:55', NULL);
INSERT INTO platform
VALUES (3, '复活复活方和', 1, '2019-07-09 18:17:05', '2019-07-09 18:17:56', NULL);
查询语句:
SELECT id, name FROM platform
WHERE state
= 1 AND platform
.deleted_time
IS NULL ORDER BY FIELD( id, 1, 2 ), updated_time
DESC
查询结果: id name 3 范德萨范德萨 1 存存发达的存 2 复活复活方和
按道理说 ORDER BY 应该是先按 FIELD 先排序 再按 updated_time,现在缺是 updated_time 排在了前面?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.