sqlserver2000 升级到2008后,关于insert into select的问题 200
SQL:insertintotable1selectcol1,LEFT(CONVERT(VARCHAR,DATEADD(mm,0,GETDATE()),112),6)fr...
SQL:
insert into table1 select col1,LEFT(CONVERT(VARCHAR, DATEADD(mm, 0, GETDATE()), 112), 6) from table2 group by col1.
其中,table1有三个varchar型可为空的列。
这个SQL在2000里不出错。在2008里出错。如果去掉Group by,2000里也出错。我想知道为什么2000里不出错,2008里改了什么地方导致出错。谢谢大家。
因为还要给客户解释,所以请大家说的详细点,最好有些官方的参考什么的。谢谢
错误:插入的列数和目标表的列数不一致。
这个问题改倒是好改,但是不知道为什么,不好跟客户解释,不能笼统地说数据库升级产生的问题 展开
insert into table1 select col1,LEFT(CONVERT(VARCHAR, DATEADD(mm, 0, GETDATE()), 112), 6) from table2 group by col1.
其中,table1有三个varchar型可为空的列。
这个SQL在2000里不出错。在2008里出错。如果去掉Group by,2000里也出错。我想知道为什么2000里不出错,2008里改了什么地方导致出错。谢谢大家。
因为还要给客户解释,所以请大家说的详细点,最好有些官方的参考什么的。谢谢
错误:插入的列数和目标表的列数不一致。
这个问题改倒是好改,但是不知道为什么,不好跟客户解释,不能笼统地说数据库升级产生的问题 展开
5个回答
展开全部
2000也不该有这样的问题,与group by没关系,
你去掉group by报的错误与2008你给出的错误肯定不是同一个错误
你会不会是在table1中新增了字段后才变成3个的?
你去掉group by报的错误与2008你给出的错误肯定不是同一个错误
你会不会是在table1中新增了字段后才变成3个的?
追问
table1一直是3个字段,2000去掉group by出的错误和2008是一样的。
追答
看错了,错误应该是一样的
不过还是想不通这个语句如何会通过,一般如果有标识列的话是需要跳过不输入的
其他情况,即便有默认值也要显示指定其他列啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看下错误类型,报了什么错
select col1,LEFT(CONVERT(VARCHAR, DATEADD(mm, 0, GETDATE()), 112), 6) from table2 group by col1 好像只有2个字段啊,你 table1不是有3个字段么?
select col1,LEFT(CONVERT(VARCHAR, DATEADD(mm, 0, GETDATE()), 112), 6) from table2 group by col1 好像只有2个字段啊,你 table1不是有3个字段么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2000也不该有这样的问题,与group by没关系,
你去掉group by报的错误与2008你给出的错误肯定不是同一个错误
你会不会是在table1中新增了字段后才变成3个的?
你去掉group by报的错误与2008你给出的错误肯定不是同一个错误
你会不会是在table1中新增了字段后才变成3个的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
发下他的错误提示吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看你的语句没有错误,具体报的什么错?
更多追问追答
追问
2000里不报错,删掉group by后和2008里报一样的错,就是插入的列数和目标表的列数不一致
追答
你这种写法的,要跟表的列数要一样才行的,跟group by 没有关系。
或者你也写成insert into table1(要插入的列的列表),这样就不会有问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询