0

これが私の質問です:

TRUST(id INT, trustlevel INT)レコード(1、5)と(2、3)を含むテーブルがあります。ID(1、2、3、4、5)を含む配列もあります。

私が達成したいのは、配列からのすべてのIDをPRESELECTED(id INT, trustlevel INT DEFAULT 10)、TRUSTにある信頼レベルのIDがコピーされ、配列の残りの部分がデフォルト値である10を受け入れるように呼び出される一時テーブルに挿入することです。この場合。したがって、最後にPRESELECTEDにはレコード(1、5)、(2、3)、(3、10)、(4、10)、(5、10)があります。

TRUSTテーブルから値を配置する方法を理解しましたが、残りの部分で立ち往生しています。

CREATE TEMPORARY TABLE PRESELECTED (id INT, trustlevel INT DEFAULT 10);

INSERT INTO PRESELECTED (
  SELECT * FROM TRUST WHERE id IN (1, 2, 3, 4, 5)
)

これに伴う問題は、3、4、および5がTRUSTにないため、1と2のみを挿入することです。

簡単な提案はありますか?

4

1 に答える 1

1
  1. IDに一意のキーを追加します(PKまたはUNIQUE KEY)

  2. 最初にTRUSTから既存のIDを挿入します

    INSERT INTO PRESELECTED SELECT id,trustlevel FROM TRUST WHERE id IN(1,2,3,4,5);

  3. 不足しているIDを入力します

    INSERT IGNORE INTO PRESELECTED (id) VALUES (1),(2),(3),(4),(5);

于 2012-06-21T22:42:37.237 に答える