sql - 每个表中的列名必须是唯一的。同时将表数据从一个表复制到sql server中的另一个表

标签 sql sql-server sql-server-2008

我有一个包含以下列的表Transaction_tbl:

transactid   Tbarcode     dtime

1            100          2013-04-16 14:15:47.243
2            101          2013-05-10 10:15:47.243
3            102          2014-02-20 02:15:48.000

在此表中,transactid 是主键。

我还有一张表KHanger_tbl,其中包含以下列:

transactid   Hbarcode
1             21
2             22
3             23

在我的KHanger_tbl中,这个transactid是foregin key

我想将日期范围 <=2013-12-30 的数据从 Transaction 表移动到另一个名为 Transaction2013.. 的表(我指的是 2013 年的数据)

同时相应的Khanger_table数据需要移动到名为Khanger2013的表

我在执行查询时创建一个新表..

第一个查询

select * into Transaction2013
from Transaction_tbl
where dtime <='2013-12-30'

第二个查询

select * into Khanger2013
from KHanger_tbl 
inner join Transaction_tbl
on Transaction_tbl.transactID=KHanger_tbl.transactid
where Transaction_tbl.dtime <='2013-12-30

但是在执行第二个查询时,出现错误:

Column names in each table must be unique. Column name 'transactID' in table 'Khanger2013' is specified more than once.

最佳答案

通过使用 select * 您需要所有列。由于两个表都有一个 transactionid,因此将在目标表中创建两次,这是不允许的。您需要使用类似的东西:

select k.transactid, k.Hbarcode into Khanger2013
 from KHanger_tbl k
inner join Transaction_tbl t
on t.transactid=k.transactid
where t.dtime <='2013-12-30

关于sql - 每个表中的列名必须是唯一的。同时将表数据从一个表复制到sql server中的另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23677148/

相关文章:

sql - 使用WITH FORMAT备份SQL Server数据库

sql - 了解 SSMS 2008 中关系的更新和删除规则

sql-server - SQL中的条件外键

sql-server - 防火墙1433端口未打开

c# - 单行子查询返回多行 Oracle 数据库

mysql - MySQL 查询速度能否取决于表大小?

mysql - SQL中的SQL连接和子查询

sql server 2008 对 exec 语句的限制

sql-server - 通过具有索引的多列之一进行选择

java - MySQL数据库查询和更新