加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – Microsoft SQL Server从select查询中插入

发布时间:2020-12-12 06:57:11 所属栏目:MsSql教程 来源:网络整理
导读:我想要做的是:读取日志并将必要的数据插入3个不同的表中,以获取彼此的信息。 在gamelogs db上找到LOG_ITEM201303。 Mail_Item_Table,Mail_List_Table,Mail_Message_Table位于游戏数据库中。 邮件表通过索引连接。 CHAR_KEY,NAME,ITEMNUM是我需要用于查
我想要做的是:读取日志并将必要的数据插入3个不同的表中,以获取彼此的信息。

在gamelogs db上找到LOG_ITEM201303。
Mail_Item_Table,Mail_List_Table,Mail_Message_Table位于游戏数据库中。

邮件表通过索引连接。

CHAR_KEY,NAME,ITEMNUM是我需要用于查询的值。

查询我从日志中获取数据:

SELECT CHAR_KEY,NAME,ITEMNUM
FROM LOG_ITEM201303
where 
(   
    ITEMNUM = 14317
OR  ITEMNUM = 14318
OR  ITEMNUM = 15478
OR  ITEMNUM = 15479
OR  ITEMNUM = 14301
OR  ITEMNUM = 14302
OR  ITEMNUM = 15476
OR  ITEMNUM = 15477
OR  ITEMNUM = 15018
OR  ITEMNUM = 15019
OR  ITEMNUM = 15020
OR  ITEMNUM = 15021
OR  ITEMNUM = 15022
OR  ITEMNUM = 15023
OR  ITEMNUM = 15024
OR  ITEMNUM = 15025
OR  ITEMNUM = 14437
OR  ITEMNUM = 14438
OR  ITEMNUM = 15656
OR  ITEMNUM = 15657
OR  ITEMNUM = 15658
OR  ITEMNUM = 15659
OR  ITEMNUM = 15660
OR  ITEMNUM = 15661
OR  ITEMNUM = 15662
OR  ITEMNUM = 15663
) AND (KIND = 133) AND (Convert(varchar,OCCUR_TIME,111) < '2013/03/22')

上述日志查询的结果示例(总实际结果为600):

CHAR_KEY        NAME            ITEMNUM
 -----------+----------------+-----------
 28257      |   clarkailey   |   14438
 894367     |   Wolf         |   15023
 2869858    |   HOPEINME     |   14437

现在我需要自动将每行插入到这个查询中:

CHAR_KEY        NAME            ITEMNUM
 -----------+----------------+-----------
 2869858    |   HOPEINME     |   14437

(此查询显示了上述第三个示例数据的插入示例…
而不是为每个条目提供此查询是否有一种方法可以更快地完成?)

INSERT INTO Mail_Item_Table
(ItemNumber,ItemInfo,ReceiveDate)
VALUES
(14437,--this is the ITEMNUM
    (SELECT CONVERT(BINARY(16),REVERSE(CONVERT(BINARY(16),14437)))),NULL)

INSERT INTO Mail_Message_Table
(Message)
VALUES
('Automated Message from the ADMIN.')

INSERT INTO Mail_List_Table
(ReceiverCharKey,MailListIndex,MailItemIndex,MailMessageIndex,Sender,Receiver,SendDate)
VALUES 
(2869858,--this is the CHAR_KEY
(SELECT TOP 1   MailListIndex+1 as last_entry
 FROM           Mail_List_Table
 WHERE          sender = 'SENDER'
 ORDER BY       MailListIndex DESC),(SELECT TOP 1   MailItemIndex AS last_entry
 FROM           Mail_Item_Table
 ORDER BY       MailItemIndex DESC),(SELECT TOP 1   MailMessageIndex AS last_entry
 FROM           Mail_Message_Table
 ORDER BY       MailMessageIndex DESC),'SENDER','HOPEINME',--this is the NAME
 getdate())

我的问题:

如何自动化所有这些,查询将读取所有日志并逐行插入数据。
非常感谢你。

我可以使用@variables吗?

解决方法

您可以使用以下语法插入
INSERT INTO dbo.Destination (Col1,Col2,Col3)
SELECT Col1,Col3
FROM dbo.Source

如果您具有与目标相同的列或结果集的表,则不必在INSERT中指定列。

INSERT INTO dbo.Destination
SELECT *
FROM dbo.Source

这两个都基于已创建的目标表。这些与SELECT * INTO dbo.Destination FROM dbo.Source不同

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读