一对多的反查询

苦苦的潜行者 苦苦的潜行者 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现有

表1
reqeustfilesystem
字段
fileid(主键) requestfilename
1 ab
2 bc
表2
programfilesystem
字段
exeid(主键) fileid(和表1的对应) programfilename
1 1 a.doc
2 1 b.doc
3 2 a.doc
-------------------
其中*id都为数值型


我想实现表2中相同fileid在更新programfilename时能够检测存在,
如我要将b.doc改成a.doc,会提示ab中已经存在a.doc你不能再添加相同;
由于bc和ab的fileid不同所以在更新时不提示.

我现在只知道exeid=2和要把exeid=2的programfilename更新为"a.doc"
我想要一句sql语句实现,现有两种想法

一.我根据exeid=2反查询表1的fileid,然后查找"a.doc"在表2中(对应表1的fileid)是否存在,我写的语句如下,但是实现不了,只能查询出"b.doc"[我觉得我这个想法绕的很远]
select a.programfilename from programfilesystem as a where a.fileid=(select fileid from requestfilesystem as b where a.exeid=2 and a.fileid=b.fileid)
这一句的结果相当于
select programfilename from programfilesystem where exeid=2
我居然不明白为什么这样


二.我不需要查询fileid,我只需要找表2中与exeid=2相同fileid的记录是否存在"a.doc",这可能需要内连接,但是我不会写.


请大神们指点一二,或者有更好的想法也告诉我,谢谢了.

...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
苦苦的潜行者
MS-SQL Server 34,876 成员 254,635 内容