工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2752|回复: 10

SQL删除记录时怎么判断有无关联

[复制链接]
发表于 2008-3-4 16:26 | 显示全部楼层 |阅读模式
有一表跟很多表都有关联,现在我想删除这一表里没关联的记录
不知怎么删除?
发表于 2008-3-4 19:08 | 显示全部楼层
如果表之间有主外键关联约束的话,那相关联的表里面的所有记录(元组)都是相关联的啊。不存在没关联的记录吧?
回复

使用道具 举报

 楼主| 发表于 2008-3-5 15:53 | 显示全部楼层
是这样的,有个产品资料表,有很多表都调用这个表的产品ID。现在我现把没被调用的记录都删除。应该怎么删呢
回复

使用道具 举报

发表于 2008-3-5 16:12 | 显示全部楼层
我猜我明白楼主的意思,delete  from table3443 where ****


就是Where条件写点判断吧
回复

使用道具 举报

发表于 2008-3-5 16:32 | 显示全部楼层
where id in (select id from  tabelDEF where ...)
回复

使用道具 举报

发表于 2008-3-9 16:56 | 显示全部楼层
貌似集合操作的性能比较差...
回复

使用道具 举报

发表于 2008-3-9 16:59 | 显示全部楼层
in 关键字是能不用就不用...
回复

使用道具 举报

发表于 2008-3-9 17:05 | 显示全部楼层
就像在C中能不用除法或者求余就尽量不要用.....
回复

使用道具 举报

发表于 2008-3-13 22:17 | 显示全部楼层

回复 1 的帖子

不想用IN关键字的话可以用左连接或者右连接来实现。没有看到你的表结构,所以没有办法写出SQL语句给你。
回复

使用道具 举报

发表于 2008-3-17 10:48 | 显示全部楼层
删不掉的就是有关联的,除非你设置了级联删除

如果用这方法记得要补获异常,不然程序会出错
回复

使用道具 举报

发表于 2008-3-17 14:32 | 显示全部楼层
能用 in 一般也能用 exists ,而 exists 性能也没什么问题!
如果你的数据是物理关联,那么就不用你自己判断了,数据库帮你做,级联删除,抛出异常之类的
假如是逻辑关联,那用 exists 应该可以解决
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-31 00:13

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表