0
我對SQL很陌生,我遇到了從表中刪除選定行的問題。SQL - 從數據庫中刪除選定的行
我寫了一個查詢,從表中選擇所需的行,但是當我嘗試執行DELETE FROM table_name WHERE EXISTS
時,它會刪除數據庫中的所有行。
這裏是我完整的查詢:
DELETE FROM USR_PREF WHERE EXISTS (
SELECT *
FROM USR_PREF
WHERE USR_PREF.USR_ID = 1
AND ((USR_PREF.SRV NOT IN (SELECT SEC_ENTITY_FOR_USR_ACTION_VIEW.ENTITYT_ID
FROM SEC_ENTITY_FOR_USR_ACTION_VIEW
WHERE SEC_ENTITY_FOR_USR_ACTION_VIEW.USR_ID = 1
AND SEC_ENTITY_FOR_USR_ACTION_VIEW.ENTITYTYP_CODE = 2
AND USR_PREF.DEVICE IS NULL)
OR (USR_PREF.DEVICE NOT IN (SELECT SEC_ENTITY_FOR_USR_ACTION_VIEW.ENTITYT_ID
FROM SEC_ENTITY_FOR_USR_ACTION_VIEW
WHERE SEC_ENTITY_FOR_USR_ACTION_VIEW.USR_ID = 1
AND SEC_ENTITY_FOR_USR_ACTION_VIEW.ENTITYTYP_CODE = 3)))))
的選擇查詢返回所需的列,但DELETE命令只是刪除該整個表。
請協助。
刪除過濾器顯示「如果有任何記錄符合以下條件,則刪除」您想說「刪除記錄與以下內容匹配的位置」。你可以刪除'WHERE EXISTS(SELECT * FROM USR_PREF'),它應該像預期的那樣工作 –
有趣的是,你說它刪除了整個表。當我讀取查詢時,它應該在USR_PREF_T.USR_ID上得到一個錯誤,因爲USR_PREF_T '沒有定義 –
@GordonLinoff 這只是一個語法錯誤,更正了它 –