3

我有这张桌子:

ip   country

1     A
2     A
3     B
4     B
4     B

我正在尝试编写一个查询,它将返回如下内容:

A 1,2
B 3,4

例如SELECT * FROM table GROUP BY国家/地区回报:

A 1
B 3

但这不是预期的结果。

Ι 可以运行这个简单的查询:

SELECT * FROM table ORDER BY ip

并以编程方式编写如下内容:

$c_ip=0;
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
if($row['ip'])!=$c_ip)
{
$c_ip=$row['ip'];
//new line!!
}else
{
//don't close <tr> code goes here
}
}
4

5 回答 5

14

试试这个:

SELECT country, GROUP_CONCAT(DISTINCT ip SEPARATOR ',') AS ips 
FROM my_table 
GROUP BY country

SQL小提琴

于 2013-04-02T09:44:05.453 回答
1

如果您不希望值 4 重复,您可能需要在 ip 前面添加“DISTINCT”。

SELECT country, GROUP_CONCAT(DISTINCT ip SEPARATOR ',') AS ids 
FROM my_table 
GROUP BY country
于 2013-04-02T09:58:42.153 回答
0

试试这个Query,你可以STUFFSQL SERVER

   SELECT 
  t1.country,
  STUFF((
    SELECT distinct ', ' + cast(t2.ip as varchar)
    FROM Table1 t2
    WHERE t2.country = t1.country
    FOR XML PATH (''))
  ,1,2,'') AS Names
FROM Table1 t1
GROUP BY t1.country;

SQL 小提琴

于 2013-04-02T09:45:34.253 回答
0

试试这个:

SELECT country, GROUP_CONCAT(ip)
FROM table1
GROUP BY country

SQL 小提琴在这里

于 2013-04-02T09:45:36.083 回答
0

试试这个

              SELECT DISTINCT country, SUBSTRING(ConcateColumn,2,LEN(ConcateColumn))
    FROM Table t1
   CROSS APPLY ( 
                select substring((SELECT  ','  + ip 
                     FROM Table t2
                     WHERE t2.country = t2.country
                     ORDER BY DescOfFault 
                     FOR XML PATH('')),2,20000)
                      )  D ( ConcateColumn )
于 2013-04-02T09:47:34.803 回答