0

5列のテーブルがあります。4 つの列は同じままで、5 番目の列のみが変更されます。

a  b   c   d   e

v1 v2  v3 v4  v10
v1 v2  v3 v4  v11
v1 v2  v3 v4  v12
v1 v2  v3 v4  v13
v1 v2  v3 v4  v14
v1 v2  v3 v4  v15
v6 v7  v8 v9  v16
v6 v7  v8 v9  v17
v6 v7  v8 v9  v18
v6 v7  v8 v9  v19
v6 v7  v8 v9  v20

最初の 4 列の値は常に同じで、5 列目の値のみが変更されます。

列 a、b、c、d を主キーとして作成し、collowing ステートメントを試しています。

INSERT INTO $tablename( a,b,c,d,e)
                VALUES(v1,v2,v3,v4,v5)
    ON DUPLICATE KEY UPDATE e = VALUES(e);

私が得る結果は次のとおりです。

a  b   c   d   e

v1 v2  v3 v4  v15

私がデータベースに入れようとしているのは次のとおりです。

a  b   c   d   e

v1 v2  v3 v4  v10
              v11
              v12
              v13
              v14
              v15
v6 v7  v8 v9  v16
              v17
              v18
              v19
              v20
4

2 に答える 2

0

主キー (abcd) と値 (e) の間には 1 対多の関係があります。したがって、各 (abcd) には多くの (e) があります。1 つのテーブルで主キーを重複させることはできないため、1 つのテーブルを使用してこれを行うことはできません。

基本的に、(少なくとも) 1 つではなく 2 つのテーブルを作成する必要があります。

Table1: a, b, c, d, i1 ((abcd) を主キーとする)
Table2: i2, i1, e (i2 を主キーとする) [代案: (i1,e) を PK とする i1, e のみ]

ここで、i1 はデータ セット間のリンクです。したがって、Table1 の (abcd) ごとに 1 つの行があり、いくつかの一意の i1 があります。次に、(abcd) に関連付けられている各 e に対して、それぞれの i1 と e を含む 1 つの行を Table2 に作成します。

于 2013-07-09T22:39:22.120 に答える