Re: [SQL ] 關於資料更改部分語法
※ 引述《hotline1234 (唉唷我的天啊)》之銘言:
: 各位好,
: 我先行試著將問題描述清楚,
: 再請各位給點意見或方向,
: 謝謝。
: 我的問題如下:
: TABLE A
: a1 a2 score
: ----------------------------------------
: AA BB 1
: BB CC 2
: AA CC 2
: BB AA 3
: CC BB 3
: 想利用SQL語法更新(或新增)資料表,
: 內容是表A的對稱關係,
: 例如 AA與BB=1,BB與AA為3,
: 更新後無論AA BB或BB AA皆為4
先確保有反向的記錄
INSERT IGNORE INTO `tableA` (`a1`, `a2`, `score`)
SELECT a.`a2`, a.`a1`, 0
FROM `tableA` a;
再用 UPDATE 配合 JOIN 取出 a1, a2 交換的值
UPDATE `tableA` a
LEFT JOIN `tableA` aa
ON a.`a1` = aa.`a2` AND a.`a2` = aa.`a1`
SET a.`score` = a.`score` + aa.`score`
我會考慮再加一個 rev_score 欄位 (隨便取的)
並且 tableA 只存 a1 <= a2 的 row, 變成
TABLE A
a1 a2 score rev_score
----------------------------------------
AA BB 1 3
BB CC 2 3
AA CC 2 null
這樣就很簡單了. 並且資料少, 更新更快. 不用 INSERT, UPDATE 時也不用 JOIN.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 71.84.58.153
推
12/30 12:15, , 1F
12/30 12:15, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):