我不清楚你所谓的“想通过条件表查找出相应的专业表中的数据”是指通过一个条件去查多个专业信息,还是通过多个条件去查多个专业信息,还有如果是多个条件的话那么你这是“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=Tmid)
当然程序里面可能是以条件表的其他字段,那么相信你可以相应找到@fid,思想都是一样的。
第二种情况:通过多个条件去查询专业表中的信息,or的情况很简单和上面一样,直接在where后加or fid=@fid2就行了。And话这种情况就相对复杂点了,如果只有两个条件可以直接用嵌套的条件去查询。但是我想实际情况条件多少个是无法预知的,那么无法用一条SQL搞定了,可以先视图,也可以用游标的方式去处理,相对复杂点!
自己看着办吧!问题确实没表达清楚!
一、
简单查询
简单的transact-sql查询只包括选择列表、from子句和where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
select
nickname,email
from
testtable
where
name='张三'
(一)
选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
select
from
testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
select
nickname,email
from
testtable
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名
列名
列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:
select
昵称=nickname,电子邮件=email
from
testtable
4、删除重复行
select语句中使用all或distinct选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为all。使用distinct选项时,对于所有重复的数据行在select返回的结果集合中只保留一行。
5、限制返回的行数
使用top
n
[percent]选项限制返回的数据行数,top
n说明返回n行,而top
n
percent时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:
select
top
2
from
testtable
select
top
20
percent
from
testtable
(二)from子句
from子句指定select语句查询及与查询相关的表或视图。在from子句中最多可指定256个表或视图,它们之间用逗号分隔。
在from子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
select
username,citytablecityid
from
usertable,citytable
where
usertable
本篇文章来源于
黑软基地-中国最大的黑客教程计算机安全教程下载基地
原文链接:
>
以上就是关于sql数据库中多对多的查询语句怎样写表如专业表:magor (mid magorname)全部的内容,包括:sql数据库中多对多的查询语句怎样写表如专业表:magor (mid magorname)、SQL数据库语句查询、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)