如何从选择查询中删除项目?

时间:2016-07-20 22:45:25

标签: sql sql-server

我有这个查询,它返回需要删除的项目。查询应该删除这些项目。

SELECT p1.ID
FROM pidata_load p1
WHERE NOT EXISTS (SELECT p2.ID FROM pi_base p2 WHERE p1.pbid = p2.ID)

这样做是否安全?

DELETE FROM pidata_load
WHERE NOT EXISTS (SELECT p2.ID FROM pi_base p2 WHERE pbid = p2.ID)
GO

更新1 - 这是我在外表上使用别名的查询

DELETE p1 FROM pidata_load AS p1 WHERE NOT EXISTS (SELECT p2.ID FROM pi_base p2 WHERE p1.pbid = p2.ID)
GO

3 个答案:

答案 0 :(得分:2)

是的,这将有效。 DELETE语句与SELECT语句非常相似,但它会删除结果。

答案 1 :(得分:0)

是的,.input__field--hoshi { margin-top: 5em; padding: 0.85em 0.15em; width: 100%; background: transparent; color: #595F6E; } 在删除语句的EXISTS子句中有效。

您也可以使用WHERE来检查ID。很确定这比<{1}} 效率低。在我看来,它有点更容易阅读,但再次知道它效率低

IN

答案 2 :(得分:0)

是的,definitely it safe使用delete语句而不是select。

在执行之前使用select测试delete语句是good practice