MySQLケース
639 ワード
1.条件付きソート
もし今テーブルがあったらuserは、次のようになります.
要求:status=0の場合、create_time昇順をソート条件とする.status=1の場合、update_time降順をソート条件とします.また、ページを分けて、1ページに10件の記録が必要です.
CASE WHEN...THENを使ってこの機能を実現できます
添付:1.データSQLの挿入
もし今テーブルがあったらuserは、次のようになります.
create table tbl_user(
status int,
create_time bigint,
update_time bigint
);
要求:status=0の場合、create_time昇順をソート条件とする.status=1の場合、update_time降順をソート条件とします.また、ページを分けて、1ページに10件の記録が必要です.
CASE WHEN...THENを使ってこの機能を実現できます
SELECT *
FROM tbl_user ORDER BY status,
CASE WHEN status = 0 THEN create_time END ASC,
CASE WHEN status = 1 THEN update_time END DESC
LIMIT 0,10
添付:1.データSQLの挿入
INSERT INTO `tbl_user` VALUES (0,10,20),(0,15,20),(0,5,20),(0,1,20)
,(0,20,20),(1,20,5),(1,20,7),(1,20,2),(1,20,23),(1,20,17);