0

我有一张这样的桌子

C_number      Pkg_type
03212889438    calls
03212889438    sms
03215919448    Crbt
03215919448    Ivr
03215919448    call

我想输出为

C_number      Pkg_type
03212889438   Calls,sms
03215919448   Crbt,ivr,call

我的查询是:

<?php 
$s = "SELECT distinct(C_number),Pkg_type as pkg FROM packages group by C_number";

$results = mysql_query($s);
while($row = mysql_fetch_array($results))
{

  echo  $row['C_number'];

  echo  $row['pkg'];
}

 ?>

但是此查询仅针对每个数字仅显示其 pkg 中的一个而不是全部.. 我该怎么办?

没有 group_concat 有什么办法吗.. 我的意思是我不想在 pkg_type 之前写任何东西,因为它会在以后分发我的代码.. 如果您有任何想法,请指导我

4

4 回答 4

5

使用 MySql 特定的GROUP_CONCAT聚合函数。

您对上述功能的查询:

$s = "SELECT C_number,group_concat(Pkg_type) as pkg FROM packages group by C_number";
于 2013-06-18T12:34:19.883 回答
0

您可以使用以下查询:

SELECT c_number, GROUP_CONCAT( pkg_type) as pkg FROM packages GROUP BYc_number

于 2013-06-18T12:53:39.993 回答
0

我个人会做的是创建一个 c_number 的列表。然后使用准备好的语句来检索每个 c_number 的所有 pkg​​ 值,因为如果您重新使用相同的准备好的查询,它通常会很快。

Zoltán 的解决方案似乎更好。

于 2013-06-18T12:41:33.323 回答
0

SELECT c_number1 , GROUP_CONCAT( pkg_type ) as pkg FROM tablename GROUP BY c_number

于 2013-06-18T17:22:07.130 回答