Sql 从具有多列的子查询中删除
我需要了解如何基于子查询删除记录 为了避免重复这个问题,我在这里做了很多尝试,但是找不到答案 下面是子查询:Sql 从具有多列的子查询中删除,sql,subquery,Sql,Subquery,我需要了解如何基于子查询删除记录 为了避免重复这个问题,我在这里做了很多尝试,但是找不到答案 下面是子查询: SELECT TOP (100) PERCENT t.id_col, t.dept_no, t.unit, t.lease_star FROM trans AS t FULL OUTER JOIN temp_lease AS l ON t.dept_no = l.dept_no AND t.unit = l.unit AND t.lease_star = l.lease_start_
SELECT TOP (100) PERCENT t.id_col, t.dept_no, t.unit, t.lease_star
FROM trans AS t FULL OUTER JOIN
temp_lease AS l ON t.dept_no = l.dept_no AND t.unit = l.unit AND t.lease_star = l.lease_start_date
WHERE (l.dept_no IS NULL)
ORDER BY t.dept_no, t.unit, t.lease_star
子查询在trans文件中查找没有匹配的dept_no、unit和lease_start_date组合的记录。这两个文件在最后一个字段中具有不同的名称,因为VFP将字段名称截断为10,并将VFP文件升迁
找到这些记录后,我希望能够删除临时租约表中没有三重匹配的记录
首先,我希望选择而不是删除,因为我一直都知道,只有在确保代码正确后,才使用删除
有人能帮我解决这个问题吗?我尝试了所有的变化,但似乎没有任何效果。您可以这样做:
DELETE FROM trans
WHERE id_col in(
SELECT TOP (100) PERCENT t.id_col
FROM trans AS t FULL OUTER JOIN
temp_lease AS l ON t.dept_no = l.dept_no AND t.unit = l.unit AND t.lease_star = l.lease_start_date
WHERE (l.dept_no IS NULL)
ORDER BY t.dept_no, t.unit, t.lease_star) innerquery
如果坚持先选择,可以先运行内部查询,然后再执行以下操作:
DELETE FROM trans
WHERE id_col in([ID_LIST_FROM_1st_QUERY])
不过我还是同意第一种方法,因为在你做了足够的测试之后,如果你删除了你不需要的东西,并且把它们分开,不管怎样都会删除
希望能有帮助 从trans中删除
你在哪里
选择顶部100%t.id\U列
从trans AS t完全外部连接
在t.dept\u编号=l.dept\u编号和t.unit=l.unit和t.lease\u star=l.lease\u开始日期,临时租赁为l
其中l.dept\u no为空
按t.dept\u编号、t.unit、t.lease\u星号查询的订单
-内部查询-运行速度更快
DELETE FROM trans
WHERE id_col in([ID_LIST_FROM_1st_QUERY])
希望能有帮助 根据您的描述,我将使用“不存在”。要获取要删除的行,请执行以下操作:
SELECT t.*
FROM trans t
WHERE NOT EXISTS (SELECT 1
FROM temp_lease l
WHERE t.dept_no = l.dept_no AND
t.unit = l.unit AND
t.lease_start = l.lease_start_date
);
删除记录只需对查询进行调整:
DELETE t
FROM trans t
WHERE NOT EXISTS (SELECT 1
FROM temp_lease l
WHERE t.dept_no = l.dept_no AND
t.unit = l.unit AND
t.lease_start = l.lease_start_date
);
完全联接在删除中基本上永远不会有用。第一个表中需要一条记录才能删除它。因此,左连接就足够了
此外,当两个列都为空时,上述两个列不匹配。如果这是一个问题,您可以调整correlation子句来处理空值。
将list作为SELECT TOP 100%。。。。从“从列表中选择ID”中ID所在的表中删除您正在使用的产品?SQL只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加一个链接,这样做非常完美!