mysql按具有两个不同值的记录对行进行排序

mysql按具有两个不同值的记录对行进行排序,mysql,Mysql,我有值等于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`

我有值等于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;

@iMyth和value?你希望ASC/DESC按哪个列?sex TINYINT4不为空,我希望按照我在问题中提到的顺序。你的意思是,即使在数据库中,前5条记录有1,另5条记录有2,你希望它是1,2,1,2,1,1,2,2。。是吗?是的,但不是前5条记录性别值将随机为1或2,其他什么都没有,我需要像这样选择它们1,2,1,2,1,2你太接近了,但这种>的结果与你最初的评论不符。你认为优化器为什么会出错?哦,你从来没有被初始化过?!?