当2个字段匹配时,MySQL查询按DESC排序


MySQL Query sort by DESC when 2 fields match

逻辑:

1) 当id&id1匹配,我想对DESC进行排序(例如,id=9是最高分数=400,id=1是第二高分数=150)

2) 在匹配行下面,我想要所有与按id ASC排序的匹配相同的id1(例如,id=10&id1=9将直接位于id=9&id1=9行下面)

**注意:id是唯一的,并且自动递增

原始数据:

id  id1 score
1   1   150
2   1   70
3   3   80
4   3   250
5   3   800
6   3   560
7   7   100
8   7   195
9   9   400
10  9   35

期望输出:

id  id1 score
9   9   400
10  9   35
1   1   150
2   1   70
7   7   100
8   7   195
3   3   80
4   3   250
5   3   800
6   3   560

以下是您的查询:

select
    t1.id,
    t1.id1,
    t1.score
from
    myTable t1
    left join myTable t2 on t1.id1 = t2.id and t2.id = t2.id1
order by
    t2.score desc,
    t1.id=t1.id1 desc,
    t1.id asc

sql-fiddle