SQL命令将数据从表中的1列和另一个表中的1列复制到新表中?

时间:2014-07-25 22:21:15

标签: sql sql-server

由于EF正在寻找一个名为be_PostTagbe_Posts的表,我必须创建一个新表以使Include语句在Entity Framework中工作。我正在使用DB的EF Code First。但现在的问题是关于SQL。我添加了一行数据,现在包含了工作。但我正在寻找的是一个SQL命令,它可以将数据从1个表中的1列和另一个表中的1列复制到新的be_PostTagbe_Posts表中。在be_Posts表中,我需要PostRowID中的数据进入be_Posts_PostRowIDPostTagId进入be_PostTag_PostTagIDbe_PostTag_PostTagIDbe_Posts_PostRowID都位于新be_PostTagbe_Posts表中。我对SQL不是很好,所以不知道如何做到这一点。

编辑:谢谢你的回答。我尝试了2个单独的查询,但只有数据被插入到be_PostTag_PostTagID,而be_PostTag_PostRowID仍然为空。

我尝试了这个返回The multi-part identifier "be_PostTag.PostID" could not be bound.

的查询
INSERT INTO be_PostTagbe_Posts(be_PostTag_PostTagID, be_Posts_PostRowID)
SELECT be_PostTag.PostTagID, be_Posts.PostRowID
WHERE be_PostTag.PostID = be_Posts.PostID

编辑: 这只插入了一半的数据 - 即使是2个插入也只留下一列空白

  INSERT INTO be_PostTagbe_Posts (be_Posts_PostRowID)
  SELECT PostRowID FROM be_Posts;
  INSERT INTO be_PostTagbe_Posts (be_PostTag_PostTagID)
  SELECT PostTagID FROM be_PostTag;

然而管理工作室告诉我成功执行了查询但是一列仍为空。奇怪的。

以下是表格的屏幕截图:

enter image description here

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:2)

SELECT PostTagID AS be_PostTag_PostTagID, PostRowID AS be_Posts_PostRowID
INTO be_PostTagbe_Posts
FROM be_PostTag
Inner JOIN be_Posts
ON be_PostTag.PostID=be_Posts.PostID

该命令创建了新表,其中填充了2列。

答案 1 :(得分:1)

如果我了解您,您希望将Table Z's Column A复制到Table XTable Z's Column B复制到Table Y

如果是这样,根据您的问题,TableXTableY

的表格结构尚不清楚

假设TableXTableY单个ColumnTable [除了IdentityColumn]我们的查询将是

INSERT INTO TableX
  SELECT ColumnA FROM TableZ
INSERT INTO TableY
  SELECT ColumnB FROM TableZ

休息放置表的整个结构以获得更多帮助,因为这些查询是在假设上

答案 2 :(得分:0)

在您的问题中没有足够的信息为您提供一个有效的示例,但这将是使用其他两个表中的SELECTing查询INSERT到另一个表的一般语法。

INSERT INTO destination_table(wanted_value_1, wanted_value_2)
SELECT table_1.source_field_1, table_2.source_field_1
WHERE table_1.matching_field = table_2.matching_field

两个表之间必须存在某种关系,WHERE子句才能在该语句中起作用。我猜测你提供的信息很少,表中的某个地方有一个PostRowID字段,其中包含标签,这样你的数据在标签表中看起来就像这样:

    PostRowID  PostTagID
    ---------  ---------
            1          1
            1          2
            1          3
            1          4
            2          1
            2          2
            3          3
            4          4

答案 3 :(得分:0)

听起来你应该使用两个sql语句:

Insert into `be_PostTagbe_Posts` (`be_PostTag_PostTagID`)
select `PostTagID` from POSTTAGIDTABLE

Insert into `be_PostTagbe_Posts` (`be_Posts_PostRowID`) 
select `PostRowID` from POSTTAGIDTABLE

除非项目有某种关系,否则如果你有一个select语句,它将在两列中选择合并数据,你就可以做到

Insert into `be_PostTagbe_Posts` (`be_PostTag_PostTagID`,`be_Posts_PostRowID`)
(select statement that selects the two items)