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 に答える
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 に答える
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 に答える