0

MYSQL

行全体を選択し、他のいくつかの行からいくつかのフィールドを結合します

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

| -----------------------|
|key1|key2|key3|key4|id-|
|1---|2---|3---|4---|1--|
|43--|35--|566-|52--|1--|
|45--|25--|6---|245-|2--|
|45--|25--|608-|24--|2--|
| -----------------------|

key4選択を開始するために使用されるインデックス キーです。

行全体(最初の行)とkey3同じid(1)の他のすべての行の値を取得する必要があります。

だから私は最初の行の結果を想像します1, 2, 3, 4, 1, 566

2行目は次のようになります43, 35, 566, 52, 1, 3

このようにする方法はありますか、それとも本当に別のクエリを作成する必要がありますか?

4

1 に答える 1

0

でテーブルをそれ自体に結合しますid

select t1.*, group_concat(t2.key3) other_key3
from mytable t1
join mytable t2 on t2.id = t1.id
  and t1.key3 != t2.key3
group by 1,2,3,4,5

データに対して実行されているこのクエリのSQLFiddleを参照してください

行がそれ自体に結合されないようにするために、key3 が異なるという追加の条件が必要です。これは通常、行識別子の比較ですが、テーブルには行識別子がないようです。

于 2013-10-19T01:41:03.563 に答える