Php 按条件分组
我必须在php中显示一些数据,数据结构如下Php 按条件分组,php,mysql,Php,Mysql,我必须在php中显示一些数据,数据结构如下 id channel_id added_by 1 1 9999 2 1 195 3 8 9999 4 1 180 5 1 195 6 8 9999 7 1 9999 8 1 195 9 8 9999 channel
id channel_id added_by
1 1 9999
2 1 195
3 8 9999
4 1 180
5 1 195
6 8 9999
7 1 9999
8 1 195
9 8 9999
channel_id total added_by
1 2 9999
1 4 -1
我只需要像这样显示通道id=1的总计数
id channel_id added_by
1 1 9999
2 1 195
3 8 9999
4 1 180
5 1 195
6 8 9999
7 1 9999
8 1 195
9 8 9999
channel_id total added_by
1 2 9999
1 4 -1
所有通道id的类似计数(通过9999相加)和所有其他相加的值均假定为(-1)
我能像你一样做这件事
SELECT channel_id, added_by, sum(id) as total
from table
where channel_id = 1
group by channel_id ,added_by;
但它给出的结果不是我所需要的
channel_id added_by total
1 9999 2
1 195 3
1 180 1
使用表达式,您可以确定“修改的”added\u by
值,并改为对修改后的值进行分组
另外,SUM(id)
也不会给出正确的行数。它宁愿将id
值相加。您可以改为使用来计算行数:
SELECT channel_id,
CASE
WHEN added_by <> 9999 THEN -1
ELSE 9999
END AS modified_added_by,
COUNT(*) as total
FROM your_table_name
WHERE channel_id = 1
GROUP BY channel_id, modified_added_by
使用表达式,您可以确定由添加的“修改的”值,并对修改后的值进行分组 另外,
SUM(id)
也不会给出正确的行数。它宁愿将id
值相加。您可以改为使用来计算行数:
SELECT channel_id,
CASE
WHEN added_by <> 9999 THEN -1
ELSE 9999
END AS modified_added_by,
COUNT(*) as total
FROM your_table_name
WHERE channel_id = 1
GROUP BY channel_id, modified_added_by
您可以尝试以下方法:
SELECT channel_id,
if(9999,9999,-1) as added_by,
sum(id) as total
from table
where channel_id = 1
group by channel_id,added_by;
您可以尝试以下方法:
SELECT channel_id,
if(9999,9999,-1) as added_by,
sum(id) as total
from table
where channel_id = 1
group by channel_id,added_by;
希望这对你有帮助
选择count(*)作为总计,channel_id,added_by from table group by channel_id,added_by代码>希望这对您有所帮助
选择count(*)作为总计,channel_id,added_by from table group by channel_id,added_by代码>
它将如何在按列添加的\u中生成-1。它将如何在按列添加的\u中生成-1。