Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两个字段匹配时MySQL查询按DESC排序_Php_Mysql_Sql_Sorting - Fatal编程技术网

Php 两个字段匹配时MySQL查询按DESC排序

Php 两个字段匹配时MySQL查询按DESC排序,php,mysql,sql,sorting,Php,Mysql,Sql,Sorting,逻辑: 1) 当id&id1匹配时,我想对DESC进行排序(例如id=9是最高分数=400,id=1是第二高分数=150) 2) 在匹配行下方,我希望所有id1与按id ASC排序的匹配相同(例如,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

逻辑:

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

2) 在匹配行下方,我希望所有id1与按id ASC排序的匹配相同(例如,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

MySQL无法更改从一行到另一行的排序方式。它将对查询返回的所有行应用
orderby
(排序),如果您命名所涉及的表,即vs
id1
中的
id
在哪里,这会有所帮助?和
得分
?这是一个表!您好,我包含的输出是正确的。然后按分数过滤id@Bzyzz啊,我现在明白了,我以为你想在匹配时按分数desc过滤,在其他情况下按分数asc过滤。我现在通过将最后一行中的
score
更改为
id
将其修改为您想要的。谢谢您的输入!你的很好用。我还通过两个脚本完成了所需的输出。第一个脚本查找id=id1的所有行并对DESC进行排序。第二个脚本获取id1等于第一个脚本中的行的所有行。所以在获得第一行数据之后,我运行while循环来填充第二个脚本