You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除CO2_Data表中不在vw_Countries视图内的数据?

解决DELETE语句报错问题

错误原因

你写的not in(vw_Countries)存在语法错误,SQL无法直接将视图名作为集合来源识别,必须明确从视图中查询出country列的数据集。

正确的DELETE语句写法

写法一:使用NOT IN(需确保视图中country列无NULL值)

DELETE FROM [WorldFoodProduction].[dbo].[CO2_Data]
WHERE country NOT IN (SELECT country FROM vw_Countries);

写法二:使用NOT EXISTS(推荐,避免NULL值带来的异常)

DELETE FROM [WorldFoodProduction].[dbo].[CO2_Data] cd
WHERE NOT EXISTS (
    SELECT 1 FROM vw_Countries vw
    WHERE vw.country = cd.country
);

补充说明

  • 视图vw_Countries是通过8张表的INTERSECT生成的,本身存储的是各表共有的country值,用上述语句可以精准删除CO2_Data中不在这个共有集合里的数据。
  • NOT EXISTS相比NOT IN更安全:如果视图的country列存在NULL值,NOT IN会导致整个条件返回空,最终不会删除任何数据,而NOT EXISTS不受NULL值影响。

内容的提问来源于stack exchange,提问作者solo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:34:57