2017-09-04 39 views
0

我有一個有值等於1或2,我想通過這個記錄這樣mysql命令行通過記錄與兩個不同的值

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`) 
); 
+0

@iMyth和value? ?你想要哪個列的ASC/DESC? –

+0

'性'TINYINT(4)NOT NULL,<<這將只有1或2 – iMyth

+0

我想要像我在問題 – iMyth

回答

1

希望的東西線這可以幫助你。

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; 
+0

你太接近了,但是這個結果在這裏> https://i.imgur.com/ra7m6PK.png – iMyth

+0

有點違揹你原來的評論。 – Strawberry

+0

爲什麼你認爲優化器會出錯?哦,而且永遠不會被初始化?!? – Strawberry