A.
不获奖的作者信息 :(sql server 有没有不等于号(!=)和减号的(minus))
1.select 作者信息.作者编号 from 作者信息 and 奖状信息 where 作者信息.作者编号!=奖状信息.作者编号
2.select 作者编号 from 作者信息 minus select 作者编号 from 奖状信息;
B.
查找10个最近获奖的奖状,并且按照顺序排列 select top 10 * from 奖状信息 order by 获奖日期 desc
14 个解决方案
#1
sql是一种面向集合的语句。。。。你的思考方法就不对了
select 作者编号 from 作者信息 where 作者编号 not in ( select 作者编号 from 奖状信息)
select 作者编号 from 作者信息 where 作者编号 not in ( select 作者编号 from 奖状信息)
#2
第一个不能在where比较处,把比较条件定死吗?(where 作者信息.作者编号!=奖状信息.作者编号
)
#3
select 作者信息.作者编号 from 作者信息 left join 奖状信息 on 作者信息.作者编号=奖状信息.作者B正确
编号
where 作者信息.作者编号 is null
select 作者编号 from 作者信息 where 作者编号 not in (select 作者编号 from 奖状信息)
#4
没看懂你的意思
#5
select 作者信息.作者编号 from 作者信息 left join 奖状信息 on 作者信息.作者编号=奖状信息.作者
编号
where 作者信息.作者编号 is null
左连接,那么奖状表里的作者编号就固定死了,这个之前都没怎么用,还是要谢谢你啦
#6
我的疑问很简单,就是where后面的条件是作者表有,但是奖状里面没有的作者编号,直接用?(where 作者信息.作者编号!=奖状信息.作者编号
)
来表示罢了,貌似oracle里面有all,any some,like,between and,怎么都没看到你们用呢
#7
那你想象的语句放到 oracle里面能执行吗。因为现在需求不需要用那些语句,所以没用。
#8
--2005+
select 作者编号 from 作者信息 except select 作者编号 from 奖状信息
#9
没试过,之前学的是oracle,现在改学mssqlserver,就是好奇数据库有没有直接!=的说法,像下面的语句是不是成立的,在ms sqlserver环境下
select 作者信息.作者编号 from 作者信息 and 奖状信息 where 作者信息.作者编号!=奖状信息.作者编号
#10
谢谢
#11
except
#12
--A
select * from 作者信息 a where not exists(select 1 from 奖状信息 where 作者编号=a.作者编号)
--B
select top 10 * from 奖状信息 order by 获奖日期 desc
#13
select * from 作者信息 a where not exists( select 1 from 奖状信息 where 作者编号=a.作者编号)
这里的1可以换成*吧??
select * from 作者信息 a where not exists(select * from 奖状信息 where 作者编号=a.作者编号)
#1
sql是一种面向集合的语句。。。。你的思考方法就不对了
select 作者编号 from 作者信息 where 作者编号 not in ( select 作者编号 from 奖状信息)
select 作者编号 from 作者信息 where 作者编号 not in ( select 作者编号 from 奖状信息)
#2
第一个不能在where比较处,把比较条件定死吗?(where 作者信息.作者编号!=奖状信息.作者编号
)
#3
select 作者信息.作者编号 from 作者信息 left join 奖状信息 on 作者信息.作者编号=奖状信息.作者B正确
编号
where 作者信息.作者编号 is null
select 作者编号 from 作者信息 where 作者编号 not in (select 作者编号 from 奖状信息)
#4
没看懂你的意思
#5
select 作者信息.作者编号 from 作者信息 left join 奖状信息 on 作者信息.作者编号=奖状信息.作者
编号
where 作者信息.作者编号 is null
左连接,那么奖状表里的作者编号就固定死了,这个之前都没怎么用,还是要谢谢你啦
#6
我的疑问很简单,就是where后面的条件是作者表有,但是奖状里面没有的作者编号,直接用?(where 作者信息.作者编号!=奖状信息.作者编号
)
来表示罢了,貌似oracle里面有all,any some,like,between and,怎么都没看到你们用呢
#7
那你想象的语句放到 oracle里面能执行吗。因为现在需求不需要用那些语句,所以没用。
#8
--2005+
select 作者编号 from 作者信息 except select 作者编号 from 奖状信息
#9
没试过,之前学的是oracle,现在改学mssqlserver,就是好奇数据库有没有直接!=的说法,像下面的语句是不是成立的,在ms sqlserver环境下
select 作者信息.作者编号 from 作者信息 and 奖状信息 where 作者信息.作者编号!=奖状信息.作者编号
#10
谢谢
#11
except
#12
--A
select * from 作者信息 a where not exists(select 1 from 奖状信息 where 作者编号=a.作者编号)
--B
select top 10 * from 奖状信息 order by 获奖日期 desc
#13
select * from 作者信息 a where not exists( select 1 from 奖状信息 where 作者编号=a.作者编号)
这里的1可以换成*吧??
select * from 作者信息 a where not exists(select * from 奖状信息 where 作者编号=a.作者编号)
#14
mark一下
select 1,又多学习了一个知识