從查詢結果更新記錄
假設我有一個具有以下定義的表 X:
CREATE TABLE X( id INT PRIMARY KEY, field1 varchar(100), field2 int, field3 double);
然後我發出一個查詢:
SELECT field1, field2 from X;
假設這個查詢返回了 10 條記錄。
有沒有辦法編寫查詢來更新 SELECT 中的記錄 #5?查詢會是什麼樣子?或者我必須在該查詢中包含 id,以某種方式在記錄 #5 中找到它的值,然後在下面的查詢中使用它?
類似的東西
UPDATE X SET field1 = 'def' WHERE...
。我對條件有疑問 - 為該
WHERE
子句寫什麼。我正在使用多個 DBMS,所以如果可能的話,需要一種通用的方式。更多細節:
我可以有這樣的查詢:
SELECT field1, field2 FROM X WHERE field3 = "abc";
或者我可以有這樣的查詢:
SELECT X.field1, Y.field2 FROM X, Y WHERE X.pk = Y.pk AND X.field3 = "abc";
假設當我跳到記錄 5 時,X.field1 將顯示“abc”。我希望將此欄位更新為“def”。所以我輸入“def”並跳到記錄 6。在這兩種情況下,我都想更新結果記錄集的記錄 5 X.field1。
正如您所看到的,我正在查看記錄集中的記錄(執行查詢的結果)。我想模仿 Access 正在做什麼。
假設我在 Access 中打開新表單並基於查詢。我根據自己的喜好重新排列表單上的欄位並執行表單。然後我去在表單中顯示記錄#5,然後更新一個欄位。無論表單背後的查詢有多複雜,此更新都是即時的。
我實際上想模仿 Access 正在做的事情 - 通過它在記錄集中的位置更新記錄
與大多數 RDBMS 系統一樣,Access 使用鍵值來辨識和更新行。看:
要添加、編輯或刪除記錄,基礎數據源中的記錄必須有唯一索引。否則,Microsoft Access 工作區中的 AddNew、Delete 或 Edit 方法呼叫將出現“權限被拒絕”錯誤,或者 ODBCDirect 工作區中的更新呼叫將出現“無效參數”錯誤。
SELECT * FROM Table t WHERE 1 = 1 AND EXISTS (Define criteria here)
上面是一個選擇語句。它返回儲存在表中的行。要使其成為 UPDATE 語句,請使用完全相同的語法,但不使用 SELECT 語法,而是使用 UPDATE 語法。
UPDATE t SET Column1 = 'SomeNeatValue' ,Column2 = 'AnotherNeatValue' FROM Table t WHERE 1 = 1 AND EXISTS (Define criteria here)
您如何確定選擇/更新哪些記錄取決於開發人員。如果您需要幫助,我會從www.w3schools.com開始了解查詢語法。