sql数据库中多对多的查询语句怎样写?表如专业表:magor (mid magorname)
发布网友
发布时间:2023-01-03 17:06
我来回答
共4个回答
热心网友
时间:2023-10-12 02:08
我不清楚你所谓的“想通过条件表查找出相应的专业表中的数据”是指通过一个条件去查多个专业信息,还是通过多个条件去查多个专业信息,还有如果是多个条件的话那么你这是“and”还是“or”的关系!问题最好还是能尽量表达清楚点。还有你的表和字段命名很不规范,如关系表m--i,条件表中的表名称(magorif)和其所拥有的字段(magorif)相同?
第一种情况:通过一个条件去查询专业表中的信息,想法就是通过关系表找到所有的专业ID,然后根据ID查询专业信息,当然这里的ID可能有0 、1、 或多个。图简单用in写就可以,如果你想提高效率的话,那就用exists。
in的方式:select * from magor where mid in (select distinct mid from m--i where fid=@fid) -- 其中@fid为条件参数
exists的方式: select T.* from magor T where exists (select * from m--i where fid=@fid and mid=T.mid)
当然程序里面可能是以条件表的其他字段,那么相信你可以相应找到@fid,思想都是一样的。
第二种情况:通过多个条件去查询专业表中的信息,or的情况很简单和上面一样,直接在where后加or fid=@fid2就行了。And话这种情况就相对复杂点了,如果只有两个条件可以直接用嵌套的条件去查询。但是我想实际情况条件多少个是无法预知的,那么无法用一条SQL搞定了,可以先视图,也可以用游标的方式去处理,相对复杂点!
自己看着办吧!问题确实没表达清楚!
热心网友
时间:2023-10-12 02:08
就是连接查询吧,例如以下查询语句:
select A.magorif,B.mid from magorif A,m--i B where A.fid=B.fid
查询结果:
magorif mid
数据 数据
是这个意思吗?
我举的例子是等价连接,就是条件表里面的字段fid跟关系表里面的字段fid完全一致,如果不是等值连接,还有其他连接(例如左、右连接)可以实现。不了解的话可以追问。
热心网友
时间:2023-10-12 02:09
select magorname from magor inner join m——i inner join magorif on magorif.fid=m——i.fid on
m——i.mid=magor.mid where magorif.magorif='*****'
热心网友
时间:2023-10-12 02:09
插电脑的哪个部分的