我需要刪除從子查詢中獲得的少量記錄。刪除在同一張表上從選擇查詢中選擇的記錄
假設EMP
表的列有EMPNAME
,EMPSALARY
,主鍵是EMPNAME,EMPSALARY
的組合。
delete from emp
where exists (
select *
from EMP ***** //query which fetch few records from EMP table);
上述查詢不起作用。
感謝您的幫助。
我需要刪除從子查詢中獲得的少量記錄。刪除在同一張表上從選擇查詢中選擇的記錄
假設EMP
表的列有EMPNAME
,EMPSALARY
,主鍵是EMPNAME,EMPSALARY
的組合。
delete from emp
where exists (
select *
from EMP ***** //query which fetch few records from EMP table);
上述查詢不起作用。
感謝您的幫助。
您的查詢會看起來像
delete from emp
from emp e
where exists (select *
from EMP
WHERE e.EMPNAME = EMPNAME
AND e.EMPSALARY = EMPSALARY
AND <another Condition>) --<-- Condition on which you want to delete rows
DELETE FROM EMP E1 WHERE EXISTS(SELECT E2 FROM EMP E2 WHERE E1.EMPNAME = US2.EMPNAME and E1.EMPSALARY ='100'AND E2.EMPSALARY ='1000');這個查詢在ORACLE數據庫中工作正常,但沒有使用MSSQL。你能幫我寫一個適用於ORACLE和MSSQL的通用查詢嗎? – Madhuprathap 2014-09-27 10:48:16
你可以使用下面的查詢:
delete from emp
where primary_key_column_name IN
(
select primary_key_column_name from EMP where <your conditions>
);
或
delete from emp where <your conditions>;
這與'從你的條件下刪除你的條件'相同 – 2014-09-26 19:41:52
你可以直接給在狀態where子句
delete from emp where <conditions>;
否則你可以用這種方式
DELETE FROM Table1 T1
WHERE EXISTS (SELECT column1 FROM table2 T2
WHERE T1.column1 = T2.column1
AND T1.Column2 = T2.column2);
很難肯定地說沒有整個查詢做,但我懷疑你的子查詢不相關。爲什麼要做這樣的刪除而不是直接刪除?另外,你使用的是SQL Server或Oracle?它們不是同一件事。 – 2014-09-26 19:33:57
爲什麼你不只是做一個刪除與子查詢相同的地方?你真的需要「存在」嗎? – 2014-09-26 19:39:43
另外什麼樣的PK是僱員姓名和工資? – 2014-09-26 19:43:47