7

MySQL を使用して、あるテーブルから別のテーブルに項目を移動したいと考えています。

これは私が現在使用しているものです:

INSERT INTO items_rooms (item_id, room_id,x,y,n)  
SELECT id, room_id,x,y,z
  FROM `items_phoenix`

これは機能しますが、異なる列の各値ではなく、1 つの列に複数の値を挿入したいと考えています。

例えば:

テーブル items_rooms では、items_phoenix の値 x と y を items_rooms の 1 つの列に配置したいと考えています。

x = 5 で y = 2 の場合、値ごとに異なる列ではなく、1 つの列: 5.2 のように items_rooms に保存できますか?

これが混乱している場合は申し訳ありません!

4

5 に答える 5

15

SELECT column-list で式を使用できます。選択リストの列と宛先テーブルの列の数とデータ型が一致している限り、次のようなことができます。

INSERT INTO items_rooms (item_id, room_id, x_dot_y, n)  
SELECT id, room_id, CONCAT(x,'.',y), z
  FROM `items_phoenix`
于 2013-01-09T00:48:48.717 に答える
0

単純なケースには連結を使用できます。例:

INSERT INTO items_rooms (
  item_id,
  room_id,
  x_and_y,
  n)
SELECT
  id,
  room_id,
  CONCAT(x, '.', y),
  z
FROM `items_phoenix`
于 2013-01-09T00:49:08.370 に答える
0

はい、列にテキスト情報を格納できる場合

ちょうどCONCATまたはCONCAT_WS

INSERT INTO items_rooms ( item_id, room_id, my_value, n )
SELECT id, room_id, CONCAT_WS( '.', x, y ), z
FROM `items_phoenix`

SQLフィドルデモ

于 2013-01-09T00:50:35.807 に答える
0

あなたは間違いなくこれを行うことができます。これに関する役立つ回答を参照してください。ただし、これが良いアイデアかどうかを検討する必要があります。個別の列を1つの列のある種の文字列式に非正規化すると、保守やクエリが非常に難しいものが作成されます。これを行うことで、データを自分自身にとって使いにくくしていることになります。

于 2013-01-09T00:51:34.483 に答える
-2
$table_To_Get_From = mysql_query("SELECT * FROM items_phoenix (id, room_id,x,y,z)");
if($table_To_Get_From){
    $table = mysql_fetch_assoc($table_To_Get_From);
    $values = array($table['id'],$table['room_id'],$table['x'],$table['y'],$table['z']);
    mysql_query("INSERT INTO items_rooms (item_id, room_id,x,y,n)  
        VALUES ($values[0],$values[1],$values[2],$values[3],$value[4])");
}

私はそれらを文字列にしなかったので、「$values[num]」を使用する必要があるかもしれません

値がある場合、これにより、必要に応じて挿入されます。

于 2013-01-09T00:53:14.680 に答える