2
我需要清除除表中幾列以外的所有列中的值。我能想到用下面的查詢如何在MySQL的SET子句中使用SELECT子句?
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_NAME`='accountuser' AND COLUMN_NAME NOT IN('firstname', 'lastname');
UPDATE accountuser
SET ??
WHERE accountuserid=?;
檢索除了這兩個都列名的,我不知道如何從內部SET
條款中的結果使用列名。
我能想到的其他方法是在應用程序級別構建查詢,方法是單獨運行這兩個查詢或顯式傳遞所有列名稱,但在表更改時變爲非確定性。
UPDATE:
其中該查詢將被使用的,當用戶在應用程序被刪除,該用戶的所有列,除了名字和姓氏清除的情況,以便對任何引用已刪除的應用程序中的用戶仍然存在,就像線程中的註釋等一樣。我們使用Spring JDBC和包含所有SQL查詢的純文本文件。所以,如果可能的話,我希望在單個查詢中使用這個查詢,如果不是,則希望在應用程序級別構建查詢。
您無法直接在另一個查詢中真正使用一個查詢的結果作爲關鍵字/標識符。你可以建立一個新的查詢字符串,然後執行它,例如'@sql = concat('update .... set',@somevar,'= someval'); exec @ sql;' –
你是否願意創建一個臨時表和一個全新的表與舊的表相同? –
您是否也在應用程序中動態創建表?根據我的經驗,這指向了一個被破壞的數據模型。您不應該這樣做,否則您應該能夠編寫列表列表而不會期望它發生更改。如果這沒有意義,那麼向我展示您正在使用的模式,並且我會針對您的具體情況進行解釋。 – Hogan