SQL使用之關聯更新、批量插入
- 使用場景
某個字段數據異常,利用另外一張表同步修改該表異常字段的數據;
- 關聯更新
UPDATE tableName1 AS t1
LEFT JOIN tableName12 AS t2 ON t1.xx = t2.xx
SET t1.Col = ‘‘
WHERE
t1.Id = 147852
AND t2.`Name` <> ‘‘
當然,也可以使用Inner Join或者Right Join
在實際操作中,還有可能補入相關業務數據來保持數據完整,有以下兩種操作方式
- 查詢生成數據
INSERT INTO email
SELECT UUID() AS Id,PlayerId AS PlayerId,‘00000000-0000-0000-0000-000000000000‘ AS SendPlayerId,‘系統‘ AS SendPlayerName,‘獎勵‘ AS SUBJECT, ‘恭喜獲得獎勵。‘ AS Content,0 AS EmailType,b‘0‘ AS IsReceive,‘110‘ AS Reward,NOW() AS SendTime,500 AS ModuleId,b‘0‘ AS IsDelete,b‘0‘ AS IsRead FROM info WHERE Id=11390 ORDER BY Score DESC LIMIT 0,10;
上面的這種僅適用於可構造新數據,內容可以合成sql,格式、數據都比較單一,但對某些數據動態的、並依靠其他表,這種操作稍顯無力。
- 設置列變量,查詢另外一張表頭的數據,再組裝SQL
SET @id:=‘‘;
SELECT @id:=Id FROM base_info WHERE type=‘1‘;
-- 先刪除已有的,覆蓋
DELETE FROM info WHERE Id=@id;
INSERT INTO info(Id,Count1,Count2,Count3,Count4,Count5,Time6,Num7,Time8)
VALUES (@id,0,0,0,0,9,NOW(),0,NOW());
SQL使用之關聯更新、批量插入