表的第一個列(A 到 G)已經填充了每行/記錄的資料,但 H 到 K 列中還沒有資料。所以我必須為這些列添加資料,為表中的每一行(1 到 285,無論數字是多少)。A 到 G 列應保持不變!
我使用什么 SQL 查詢將資料插入到現有但為空的記錄中?不覆寫任何列,除了 H 到 K?
我正在尋找這樣做的東西:
INSERT INTO `table` (`record_id`, `colA`, `colB`, `colC`, `colD`, `colE`, `colF`, `colG`, `colH`, `colI`, `colJ`, `colK`)
VALUES
(`auto-increment 1`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
(`auto-increment 2`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
(`auto-increment 3`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
一直到第 285 行:
(`auto-increment 285`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
uj5u.com熱心網友回復:
您可以將查詢撰寫為一組更新陳述句,例如:
UPDATE t SET h = .., i = .. WHERE id = 1
UPDATE t SET h = .., i = .. WHERE id = 2
如果所有列都獲得相同的值,或者它們的塊獲得相同的值,您可以調整 WHERE 子句或省略它
如果您希望 MySQL 幫助生成更新陳述句塊,請記住它們只是一天結束時的字串,因此您始終可以執行以下操作:
SELECT CONCAT('update t set h = .., i = .. where id = ', id) FROM t
它將為表中的每一行生成一條更新陳述句,并將 ID 連接到每一行上。您可以將它們從結果網格中復制出來,將它們粘貼到查詢編輯器中,調整它們并運行。當我想對模式進行大量更新陳述句時,我會經常使用這種技術,但隨后又自定義了一些
——
您也可以從另一個表進行更新。請參閱此 SO 答案:mysql update column with value from another table
uj5u.com熱心網友回復:
您可以輕松地將您的查詢更改為INSERT INTO .. ON DUPLICATE KEY UPDATE ...像這樣:
INSERT INTO `table` (`record_id`, `colA`, `colB`, `colC`, `colD`, `colE`, `colF`, `colG`, `colH`, `colI`, `colJ`, `colK`)
VALUES
(`auto-increment 1`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
(`auto-increment 2`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
(`auto-increment 3`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`)
ON DUPLICATE KEY UPDATE
colH=VALUES(colH),
colI=VALUES(colI),
colJ=VALUES(colJ),
colK=VALUES(colK);
注意:如果主鍵不相同,那么您必須在 cols colH 到 colK 上創建一個復合唯一鍵。
此查詢將插入不存在的行或更新存在鍵(如主鍵或其他唯一鍵)的行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/318720.html