注册 登录
编程论坛 SQL Server论坛

关于sql查询语句的问题

qianle 发布于 2006-12-11 18:57, 653 次点击
我是个新手,有个问题让我很困惑,所以发到这里来,希望有高手能给解答下。
我是做的两张表,一张叫科目表,一张是科目的学期数表,没有对两张表加任何约束和关系。表的情况如下:
一,表名:subject
第一列,字段名:id,int型(标识列)
第二列,字段名:name,nverchar型
二,表名:term
第一列,字段名:id,int型(不是标识列)
第二列,字段名:number,int型
以上就是表的情况,现在我干的是,我先删除两张表的所有内容,然后先往科目表里插入记录,然后再将科目表里的id取出后再和学期数即number一起插入到term表中,我写的查询语句如下:
语句1:
delete from subject
delete from term

语句2:
inert subject
select 'java' union
select 'hetml' union
select 'sql'

语句3:
insert term ([id], number)
select top 1 [id], 123 from (select top 1 [id] from subject) as s order by [id] desc union
select top 1 [id], 123 from (select top 2 [id] from subject) as s order by [id] desc union
select top 1 [id], 23 from (select top 3 [id] from subject) as s order by [id] desc

现在是我执行select top 1 [id], 123 from (select top 1 [id] from subject) as s order by [id] desc这单条语句倒是能成功,结果就2列,一行数据。但执行语句3的时候就通不过了,报的是union附近有语法错误。

这个问题我就一直没明白,希望高手们能给指点指点,谢谢!!
5 回复
#2
就这样自信2006-12-12 13:38

你在第一条语句时:
delete * from subject
delete * from term
你在第二条语句时:
insert subject
select 'id号','java' union
select 'id号','hetml' union
select 'id号','sql'

可能是这儿出了问题吧!

#3
qianle2006-12-13 20:01

我第二张表id是int型,所有你select 'id号','java' union这样不对。

#4
qianle2006-12-15 10:39
没人给个解答吗?
#5
bygg2006-12-15 13:11

不知道你第三句中的 123 23 是些什么.

#6
棉花糖ONE2006-12-15 14:16

select top 1 [id], 123 from (select top 1 [id] from subject) as s order by [id] desc
这个的输出结果是两列.
因为union前面的语句不能有order by

1