MySQLケース

639 ワード

1.条件付きソート
もし今テーブルがあったら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);