以有限的權限交換MySQL 列值
在沒有更改資料庫結構的權限的情況下更新列值可能會帶來挑戰。使用 UPDATE 語句交換值的直覺方法(例如 UPDATE table SET X=Y, Y=X)是不夠的。相反,請考慮以下規避結構變化的方法:
方法 1
使用臨時變數來保存一個值,同時分配另一個值。這可確保兩個值不會被相同的資料覆寫。
UPDATE swap_test SET x=y, y=@temp WHERE (@temp:=x) IS NOT NULL;
方法 2
使用一系列賦值來交換值。此方法可以優雅地處理 NULL 和非 NULL 值。
UPDATE swap_test SET x=(@temp:=x), x = y, y = @temp;
方法 3
利用自聯接來更新兩個表格所引用之間的數值。此方法需要主鍵或唯一索引。
UPDATE swap_test s1, swap_test s2 SET s1.x=s1.y, s1.y=s2.x WHERE s1.id=s2.id;
每種方法都有獨特的優點和限制。方法 1 可以處理非 NULL 值,而方法 2 可以處理 NULL 和非 NULL 值。方法 3 需要主鍵,但如果需要,允許在不同的行之間交換。最終,最佳方法取決於手邊任務的特定要求。
以上是如何在沒有 ALTER TABLE 權限的情況下交換 MySQL 列值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!