2016-08-23 35 views
1

这是我已经有。Mysql查询多个项目的顺序(陈述)

SELECT karma 
    , profanity 
    , username 
    FROM users 
ORDER 
    BY (karma - profanity) DESC 
LIMIT 10 

我怎么可以为了通过ORDER BY (karma - profanity) DESC LIMIT 10ORDER BY profanity DESC LIMIT 10

CREATE TABLE Test 
    (`id` int, `username` varchar(55), `karma` int,`profanity` int) 
; 

INSERT INTO Test 
    (`id`, `username`, `karma`, `profanity`) 
VALUES 
    (1, 'User1', '10', '1'), 
    (2, 'User2', '8', '2'), 
    (3, 'User3', '1', '2'), 
    (4, 'User4', '11', '1'), 
    (5, 'User5', '5', '0'), 
    (6, 'User6', '6', '3'), 
    (7, 'User7', '1', '1'), 
    (8, 'User8', '2', '3'), 
    (9, 'User9', '2', '1'), 
    (10, 'User10', '1', '7'), 
    (11, 'User11', '7', '7'), 
    (12, 'User12', '1', '1'), 
    (13, 'User13', '10', '0'), 
    (14, 'User14', '1', '3'), 
    (15, 'User15', '7', '0') 
; 

期望的结果会是这样的:

karma, profanity, username | profanity username 
    10   0 User13    7 User11 
    11   1 User4    7 User10 
    10   1 User1    3 User8 
    7   0 User15    3 User6 
    8   2 User2    3 User14 
    5   0 User5    2 User3 
    6   3 User6    2 User2 
    2   1 User9    1 User4 
    1   1 User7    1 User7 
    1   1 User12    1 User9 

既具有输出result[i].(karma - profanity) and result[i].profanity)

两个顺序组合成一个有订单不同的标注

http://sqlfiddle.com/#!9/7ca828/2

+0

的http:// sqlfiddle.com/#!9/7ca828/2 –

+0

有你去。我赞成小提琴。 @Strawberry带走它 – Drew

+0

希望这有足够的信息 –

回答

1

我认为这是朝着于水火之中的显示问题 - 这种事情你会在应用程序级的代码通常解决,但无论如何...

SELECT a.karma a_karma 
    , a.profanity a_profanity 
    , a.username a_username 
    , b.profanity b_profanity 
    , b.username b_username 
    FROM 
    (SELECT *,@kp:[email protected]+1 kp FROM test, (SELECT @kp:=0) vars ORDER BY karma-profanity DESC LIMIT 10) a 
    JOIN 
    (SELECT *,@p:[email protected]+1 p FROM test, (SELECT @p:=0) vars ORDER BY profanity DESC LIMIT 10) b 
    ON b.p = a.kp; 
+---------+-------------+------------+-------------+------------+ 
| a_karma | a_profanity | a_username | b_profanity | b_username | 
+---------+-------------+------------+-------------+------------+ 
|  10 |   0 | User13  |   7 | User11  | 
|  11 |   1 | User4  |   7 | User10  | 
|  10 |   1 | User1  |   3 | User8  | 
|  7 |   0 | User15  |   3 | User6  | 
|  8 |   2 | User2  |   3 | User14  | 
|  5 |   0 | User5  |   2 | User3  | 
|  6 |   3 | User6  |   2 | User2  | 
|  2 |   1 | User9  |   1 | User4  | 
|  1 |   1 | User7  |   1 | User7  | 
|  1 |   1 | User12  |   1 | User9  | 
+---------+-------------+------------+-------------+------------+ 
+0

不太确定你在那里抽烟@Drew,但为我省了一些.-) – Strawberry

+0

谢谢。这是我需要的。 –