日期:2014-05-17  浏览次数:20467 次

有没有懒一点的SQL语句
从一个表插数据到另一个表。比如用select ta.* into tb这样的语句。

现在是:ta里面有若干字段,tb里有大部分字段与其相同,小部分不同。

有什么简单的办法,可以把ta里相同的字段插入tb,不同的字段,我爱给哪几个赋值就赋值。

最好是不用把各个字段列出来,那样太累了。




------解决方案--------------------
宁愿发帖,也不愿打几个字段。。


可惜没有捷径
------解决方案--------------------

--A表的全部字段
select stuff((select ','+name from sys.columns where object_id=object_id('A') for xml path('')),1,1,'')
--AB两表相同的字段名
select a.name
(select name from sys.columns where object_id=object_id('A'))a
inner join 
(select name from sys.columns where object_id=object_id('B'))b
on a.name=b.name

--AB两表不同的字段名,将AB俩表对换是另一种BA不同的字段
select name from sys.columns where object_id=object_id('A')
and name not in 
(select name from sys.columns where object_id=object_id('B')

------解决方案--------------------
好像没有哦哦
------解决方案--------------------
动态显式表的列:
DECLARE @s NVARCHAR(4000)
SET @s = ''
SELECT  @s = @s + ',' + QUOTENAME(name)
FROM    syscolumns
WHERE   id = OBJECT_ID('表名')
        AND name NOT IN ( '不希望显式的列' )
SET @s = STUFF(@s, 1, 1, '')
EXEC('select '+@s+' from 表名  ')
  


------解决方案--------------------
相同字段比对,然后不同的提示输入即可,代码写起来还是比较简单的
------解决方案--------------------
你太能想了,呵呵@!
------解决方案--------------------
自己做一个sql代码生成辅助工具
------解决方案--------------------
直接对应字段是最简单的方式了
------解决方案--------------------
如果逻辑关系复杂 还是考虑外部软件实现逻辑进行迁移数据吧