我需要删除从子查询中获得的少量记录。删除在同一张表上从选择查询中选择的记录
假设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