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 这只是一个语法错误,更正了它 –