Php 如何在mysql中选择一些具有特定值的行并对其进行排序
我有一个MYSQL数据库,其中有一些列和行。 我想选择一些具有相同值的行,对它们求和,然后对它们进行排序 例如:Php 如何在mysql中选择一些具有特定值的行并对其进行排序,php,mysql,sorting,Php,Mysql,Sorting,我有一个MYSQL数据库,其中有一些列和行。 我想选择一些具有相同值的行,对它们求和,然后对它们进行排序 例如: Id data 1 5 2 12 4 42 2 2 1 3 1 8 4 2 比如: 数据:(16个id:1),(数据:14个id:2),(数据:44个id:4) 为此,我尝试了以下代码: $sql = "SELECT id, SUM(data) AS value_sum FROM table GROUP BY id O
Id data
1 5
2 12
4 42
2 2
1 3
1 8
4 2
比如:
数据:(16个id:1),(数据:14个id:2),(数据:44个id:4)
为此,我尝试了以下代码:
$sql = "SELECT id, SUM(data) AS value_sum FROM table GROUP BY id ORDER BY value_sum DESC LIMIT 30";
$result = mysqli_query($conn, $sql);
$ids = "";
$datas = "";
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result))
{
$ids .= $row['p_id'] . '^';
$datas.= $row['value_sum'] . '^';
}
}
它工作正常,我可以得到按value\u sum
排序的行和值
但是我的问题是ID没有排序,我也想得到排序的ID,但是结果没有排序。
我的意思是,在我不知道的结果中,我可以得到value\u sum
的真实id吗
有关更多解释,我希望得到以下结果:
(身份证4:44),(身份证1:16),(身份证2:14)
我怎样才能做到这一点?您可以使用sum()、group by和order by sum和id
select id, sum(data) , concat('(id ',id, ':', sum(data) , ')')
from my_table
group by id
order by sum(data) desc, id asc
或
如果你需要在同一行上
select group_concat(my_col)
from (
select id, sum(data) , concat('(id ',id, ':', sum(data) , ')') my_col
from my_table
group by id
order by sum(data) desc, id asc ) t
您可以按任意数量的列按顺序排序,因此我不清楚您所说的“我不知道我是否可以获得值\u sum的真实id”是什么意思。我尝试过这个方法,但id与
value\u sum
I表示id按行排序,而不是按值\u sum排序。您的注释不清楚。。更新您的问题将明确的预期结果添加为表格结果。。(什么意思id是按行排序的,而不是按总和排序的???)我更新了它。我的意思是这部分:IDASC,只按行索引对id排序。但我想要的是带有“sum(data)”结果的排序ID@SCAISedgAnswer更新。。根据你的样本(身份证4:44),(身份证1:16),(身份证2:14)
select group_concat(my_col)
from (
select id, sum(data) , concat('(id ',id, ':', sum(data) , ')') my_col
from my_table
group by id
order by sum(data) desc, id asc ) t