“两条不同表的查询结果”和一个整数,如何插入另一张表中???

时间:2022-01-19 01:43:40
insert into achievement(stuid,subid,score)
values(
select stuid from student where stuname = '小张',
select subid from subject where subname='C# 高级',
80
)
go

大概就是这样的sql,语句不规范,执行有错.....
studi和subid要各通过一条查询语句获得,还有个score是直接80,
还有该achievement的表格所有列都不能为空
必须要一条插入语句
“两条不同表的查询结果”和一个整数,如何插入另一张表中???这个到底怎么写呀?

10 个解决方案

#1


insert into achievement(stuid)
select stuid from student where stuname = '小张'
union all
select subid from subject where subname='C# 高级'
union all
select '80'

#2


引用 1 楼 guguda2008 的回复:
insert into achievement(stuid)
select stuid from student where stuname = '小张'
union all
select subid from subject where subname='C# 高级'
union all
select '80'

好像执行。。不行,前面的insert into achievement(stuid)我改成了insert into achievement(stuid,subid,score)也不行

系统说:
INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。

应该是说只能有一条select语句吧?多条好像不可以。。。

#3


这道题。。。会不会是错的呀。。。一条插入语句根本没办法写吧????? “两条不同表的查询结果”和一个整数,如何插入另一张表中???

#4


引用 2 楼 hughdevil 的回复:
Quote: 引用 1 楼 guguda2008 的回复:

insert into achievement(stuid)
select stuid from student where stuname = '小张'
union all
select subid from subject where subname='C# 高级'
union all
select '80'

好像执行。。不行,前面的insert into achievement(stuid)我改成了insert into achievement(stuid,subid,score)也不行

系统说:
INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。

应该是说只能有一条select语句吧?多条好像不可以。。。

我的语句执行报什么错

#5


引用 4 楼 guguda2008 的回复:
Quote: 引用 2 楼 hughdevil 的回复:

Quote: 引用 1 楼 guguda2008 的回复:

insert into achievement(stuid)
select stuid from student where stuname = '小张'
union all
select subid from subject where subname='C# 高级'
union all
select '80'

好像执行。。不行,前面的insert into achievement(stuid)我改成了insert into achievement(stuid,subid,score)也不行

系统说:
INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。

应该是说只能有一条select语句吧?多条好像不可以。。。

我的语句执行报什么错


不能将值 NULL 插入列 'subid',表 'stusystem.dbo.achievement';列不允许有 Null 值。INSERT 失败。
语句已终止。

#6


如果你表 student  跟表  subject  没有任何关系的话,貌似这个插入不行的吧
两个表如果没任何关系,连接起来的话,貌似成了笛卡尔积了,插入时会导致记录多于实际记录了


1楼的写法,查询的结果应该是3条记录的,成了插入3条数据,肯定是不行的。

首先你单独执行查询部分,执行通过的结果是一条记录三个字段才可以了。

#7


select a.stuid,   b.subid, 80   from student  jion subject on  XXXXXX
where a.stuname = '小张'  and  b.subname='C# 高级'


  XXXXXX  这部分不知道怎么等了……

#8


try this,

insert into achievement(stuid,subid,score)
 select
 (select stuid from student where stuname = '小张') 'stuid',
 (select subid from subject where subname='C# 高级') 'subid',
 80 'score'

#9


引用 6 楼 yangb0803 的回复:
如果你表 student  跟表  subject  没有任何关系的话,貌似这个插入不行的吧
两个表如果没任何关系,连接起来的话,貌似成了笛卡尔积了,插入时会导致记录多于实际记录了


1楼的写法,查询的结果应该是3条记录的,成了插入3条数据,肯定是不行的。

首先你单独执行查询部分,执行通过的结果是一条记录三个字段才可以了。

对的,student和csubject确实没有关系
试了好多方法都不行。。。。一开始就觉得题目错了,想在论坛试试看看有没有自己想不到的解法。。。现在看来确实是题目的问题

“两条不同表的查询结果”和一个整数,如何插入另一张表中???

#10


引用 8 楼 ap0405140 的回复:
try this,

insert into achievement(stuid,subid,score)
 select
 (select stuid from student where stuname = '小张') 'stuid',
 (select subid from subject where subname='C# 高级') 'subid',
 80 'score'



版主大大威武。。。。可以,没问题。。。题目没错 “两条不同表的查询结果”和一个整数,如何插入另一张表中???

#1


insert into achievement(stuid)
select stuid from student where stuname = '小张'
union all
select subid from subject where subname='C# 高级'
union all
select '80'

#2


引用 1 楼 guguda2008 的回复:
insert into achievement(stuid)
select stuid from student where stuname = '小张'
union all
select subid from subject where subname='C# 高级'
union all
select '80'

好像执行。。不行,前面的insert into achievement(stuid)我改成了insert into achievement(stuid,subid,score)也不行

系统说:
INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。

应该是说只能有一条select语句吧?多条好像不可以。。。

#3


这道题。。。会不会是错的呀。。。一条插入语句根本没办法写吧????? “两条不同表的查询结果”和一个整数,如何插入另一张表中???

#4


引用 2 楼 hughdevil 的回复:
Quote: 引用 1 楼 guguda2008 的回复:

insert into achievement(stuid)
select stuid from student where stuname = '小张'
union all
select subid from subject where subname='C# 高级'
union all
select '80'

好像执行。。不行,前面的insert into achievement(stuid)我改成了insert into achievement(stuid,subid,score)也不行

系统说:
INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。

应该是说只能有一条select语句吧?多条好像不可以。。。

我的语句执行报什么错

#5


引用 4 楼 guguda2008 的回复:
Quote: 引用 2 楼 hughdevil 的回复:

Quote: 引用 1 楼 guguda2008 的回复:

insert into achievement(stuid)
select stuid from student where stuname = '小张'
union all
select subid from subject where subname='C# 高级'
union all
select '80'

好像执行。。不行,前面的insert into achievement(stuid)我改成了insert into achievement(stuid,subid,score)也不行

系统说:
INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。

应该是说只能有一条select语句吧?多条好像不可以。。。

我的语句执行报什么错


不能将值 NULL 插入列 'subid',表 'stusystem.dbo.achievement';列不允许有 Null 值。INSERT 失败。
语句已终止。

#6


如果你表 student  跟表  subject  没有任何关系的话,貌似这个插入不行的吧
两个表如果没任何关系,连接起来的话,貌似成了笛卡尔积了,插入时会导致记录多于实际记录了


1楼的写法,查询的结果应该是3条记录的,成了插入3条数据,肯定是不行的。

首先你单独执行查询部分,执行通过的结果是一条记录三个字段才可以了。

#7


select a.stuid,   b.subid, 80   from student  jion subject on  XXXXXX
where a.stuname = '小张'  and  b.subname='C# 高级'


  XXXXXX  这部分不知道怎么等了……

#8


try this,

insert into achievement(stuid,subid,score)
 select
 (select stuid from student where stuname = '小张') 'stuid',
 (select subid from subject where subname='C# 高级') 'subid',
 80 'score'

#9


引用 6 楼 yangb0803 的回复:
如果你表 student  跟表  subject  没有任何关系的话,貌似这个插入不行的吧
两个表如果没任何关系,连接起来的话,貌似成了笛卡尔积了,插入时会导致记录多于实际记录了


1楼的写法,查询的结果应该是3条记录的,成了插入3条数据,肯定是不行的。

首先你单独执行查询部分,执行通过的结果是一条记录三个字段才可以了。

对的,student和csubject确实没有关系
试了好多方法都不行。。。。一开始就觉得题目错了,想在论坛试试看看有没有自己想不到的解法。。。现在看来确实是题目的问题

“两条不同表的查询结果”和一个整数,如何插入另一张表中???

#10


引用 8 楼 ap0405140 的回复:
try this,

insert into achievement(stuid,subid,score)
 select
 (select stuid from student where stuname = '小张') 'stuid',
 (select subid from subject where subname='C# 高级') 'subid',
 80 'score'



版主大大威武。。。。可以,没问题。。。题目没错 “两条不同表的查询结果”和一个整数,如何插入另一张表中???