0

3 つの MySQL テーブルがあり、それぞれに 1 つの列しかありません。

最初のテーブル -> Item_No には列 item_no があります

2 番目のテーブル -> Item_Name には列 item_name があります

3 番目のテーブル -> Item_Price には列 item_price があります

これら 3 つのテーブルには、相互に関連するデータが含まれています。

これら 3 つのテーブルを 3 つの列を含む 1 つのテーブルにマージしたいと考えています。

新しいテーブルを作成しました -> Item には item_no、item_name、item_price の 3 つの列があります。

最初の 3 つのテーブルのすべてのデータを新しいテーブル (Item) に移動したいと考えています。

ここに画像の説明を入力

4

2 に答える 2

0

あなたの構造では、SELECT同じテーブルに対するすべてのステートメントは、特に主キーがない場合、異なる結果をもたらす可能性があります(ただし、主キーでも順序付けられた結果は保証されません)。

あなたができることは、すべての行にいくつかの序数を与えることです.3つのテーブルすべてで序数が最初の順序を尊重し、それらによってテーブルを結合しようとすることを期待しています.

于 2013-09-12T07:38:29.790 に答える
0

これが機能することを保証するものではありませんが、問題が解決する可能性があります。

SET @rank1 := 0;
SET @rank2 := 0;
SET @rank3 := 0;

INSERT INTO new_table (item_no, item_name, item_price)
SELECT t1.item_no, t2.item_name, t3.item_price
FROM (SELECT @rank1 := @rank1 + 1 AS rank, item_no
      FROM Item_No) t1
JOIN (SELECT @rank2 := @rank2 + 1 AS rank, item_name
      FROM Item_Name) t2
ON t2.rank = t1.rank
JOIN (SELECT @rank3 := @rank3 + 1 AS rank, item_price
      FROM Item_Price) t3
ON t3.rank = t1.rank;

ORDER BYこれは、句を指定しない場合、最初に挿入された順序で行を返すデータベースに依存します。次に、@rankN変数は各テーブルの行番号を生成し、JOIN はこのランクによって各テーブルの列を並べます。

于 2013-09-12T08:03:28.183 に答える