簡體   English   中英

mysql通過具有兩個不同值的記錄對行進行排序

[英]mysql order rows by a record with two different values

我有值等於1或2的記錄,我想按這樣的記錄對行進行排序

1
2
1
2
1
2
1

我如何僅通過DESC或ASC的訂單來完成此訂單?

注意:有一個主鍵ID,並且有一個創建日期

CREATE TABLE `users` (
    `uid` INT(11) NOT NULL AUTO_INCREMENT,
    `phone_number` VARCHAR(16) NOT NULL,
    `password` VARCHAR(100) NOT NULL,
    `first_name` VARCHAR(100) NOT NULL,
    `last_name` VARCHAR(100) NOT NULL,
    `sex` TINYINT(4) NOT NULL, << this will have only 1 or 2
    `created_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `account_status` TINYINT(1) NOT NULL, 
    PRIMARY KEY (`uid`)
);

希望這對您有所幫助。

SELECT t.*
FROM (
  SELECT STRAIGHT_JOIN  uid, first_name , 
    @y:=IF(@sex=sex,@y+1,1) AS rnk, @sex:=sex AS sex
  FROM (SELECT @sex:=NULL) AS x
  JOIN users
  ORDER BY sex, uid DESC
) AS t
ORDER BY rnk ASC, sex ASC;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM