1

次のデータを持つMySQLテーブルがあります。

id    userid    fieldid    data
--    ------    -------    ----
 1    186       1          London
 2    186       3          Accountant
 3    186       5          Joe Jones
 4    206       1          Paris
 5    206       5          Mark Smith
 6    210       1          Berlin
 7    210       2          0020
 8    210       3          Farmer
 9    210       4          000-000-0000
10    210       5          Bill Johnson

最終的には、ユーザーIDに基づいてデータが行にフォーマットされた別のテーブルになります。

userid   Region    Acct    Title         Phone           Name
------   ------    ----    -----         -----           ----
  186    London    NULL    Accountant    NULL            Joe Jones
  206    Paris     NULL    NULL          NULL            Mark Smith
  210    Berlin    0020    Farmer        000-000-0000    Bill Johnson

SELECTステートメントは必要ありません...GROUP_CONCATを使用してデータを表示する方法を知っています。データが行になっている別のテーブル(おそらく仮想テーブル?)について話しています。

行名と列名を参照するスクリプトは気になりませんが、特定のデータフィールドを参照したくありませんでした(つまり、row_data = Londonがcolumn1に移動した場合)。

「IFfieldid=1 then move'data' to new_table.column1」のようなものを言いたいのですが、これをどのように言うかについては少しもわかりません。

誰か助けてもらえますか?

4

2 に答える 2

0

これを試して:

CREATE TABLE `temptable` AS 
SELECT userid, MAX(IF(fieldid =1, DATA, NULL)) Region, 
       MAX(IF(fieldid=2, DATA, NULL)) Acct, MAX(IF(fieldid =3, DATA, NULL)) Title, 
       MAX(IF(fieldid=4, DATA, NULL)) Phone, MAX(IF(fieldid =5, DATA, NULL)) `Name` 
FROM tablename 
GROUP BY userid
于 2013-01-11T19:32:52.457 に答える
0

これはどう:

create table mynewtable as
(the select statement you already know )
于 2013-01-11T19:26:27.460 に答える