2016-09-14 18 views
-3

私はSQLクエリについての助けが必要です.. 申し訳ありませんが、私はSQLについてよく分かりません。1つのIDから1つのテーブルの2つ以上のデータを取得

私はこのようなSQLテーブルを持っています。

| ID | Data | 
| 1 | abc | 
| 1 | def | 
| 1 | ghi | 
| 2 | jkl | 
| 2 | mno | 
| 3 | pqr | 
| 3 | stq | 

と私はこの

| ID |  Data  | 
| 1 | abc, def, ghi | 
| 2 | jkl, mno  | 
| 3 | stq, def  | 

またはこの

| ID | Data1 | Data2 | Data3 | 
| 1 | abc | def | ghi | 
| 2 | jkl | mno | 
| 3 | pqr | stq | 

のように私は、誰かが私を助けることを願ってのようになりたいです。ありがとう。 MySQLの

+3

SQL Serverでは、このクエリを試してみてください。 – Nebi

+0

あなた自身を試すことができるようにヒントのカップル。 –

+1

研究グループ 'group by'と 'group_concat'でケース/グループを使うことができます。good luck –

答えて

0

group_concatはあなたの友達です。

この関数は、連結されていないNULL 値をグループ化した文字列結果を返します。 NULL以外の値がない場合はNULLを返します。

SELECT id, group_concat(data) as data from my_table group by id 

これはあなたの最初のサンプルタイプの結果を生成します。第2のサンプル出力は、SQL Serverの場合、

+0

@SurazこれはSQLサーバーとmysqlの両方としてタグ付けされていたという事実を忘れました – e4c5

+0

group_concatは誰の友だちでもありません:-( – Strawberry

+0

ああ、ごめんなさい... これは私のランダムな仕事です。 あなたの答えをありがとう、これは私が必要なものです –

2

複雑です:

MySQLの
select id, 
stuff((select ','+data from #temp t2 where t1.id=t2.id for xml path ('')),1,1,'') as val from #temp t1 
group by id 

SELECT id,GROUP_CONCAT(data) 
FROM table 
GROUP BY id; 
+0

@Suraz:いいえSQLServerのグループconcatはありません – TheGameiswar

+0

あなたは両方のSQL -serverとmysql、私は気付かなかった – Susang

0

使用スタッフ機能

DECLARE @tbl1 AS TABLE 
(
    Id INT, 
    Data VARCHAR(50) 
) 


INSERT INTO @tbl1 VALUES(1,'abc') 
INSERT INTO @tbl1 VALUES(1,'def') 
INSERT INTO @tbl1 VALUES(1,'ghi') 
INSERT INTO @tbl1 VALUES(2,'jkl') 
INSERT INTO @tbl1 VALUES(2,'mno') 
INSERT INTO @tbl1 VALUES(3,'pqr') 
INSERT INTO @tbl1 VALUES(3,'stu') 

SELECT 
    Id, 
    (
     SELECT 
     STUFF 
     ( 
      (
       SELECT 
        ',' + Data 
       FROM @tbl1 B        
       WHERE A.Id=B.Id        
       FOR XML PATH('') 
      ), 
      1, 1, '' 
     ) 
    ) AS Data 
FROM @tbl1 A 
GROUP By A.Id 
2

以下のクエリをお試しください、それは動作するはずです

select 
    t1.id, 
    Data=STUFF((select ', '+t2.Data from test t2 where t1.id=t2.id for xml path('')),1,2,'') 
    from test t1 
    group by t1.id 

私はあなたがSQL-ServerまたはMySQLを使用している

関連する問題