Microsoft SQL Server insert from select query(Microsoft SQL Server 从选择查询插入)
问题描述
我想要做的是:读取日志并将必要的数据插入到 3 个不同的表中,这些表可以相互获取信息.
What I'm trying to do: read the logs and insert the necessary data into 3 different tables that get information from each other.
LOG_ITEM201303
在游戏日志数据库中找到.Mail_Item_Table
, Mail_List_Table
, Mail_Message_Table
在游戏数据库中找到.
LOG_ITEM201303
is found on gamelogs db.
Mail_Item_Table
, Mail_List_Table
, Mail_Message_Table
is found on game db.
邮件表通过索引连接.
CHAR_KEY
、NAME
、ITEMNUM
是我需要用于查询的值.
CHAR_KEY
, NAME
, ITEMNUM
are the values I need to use for my queries.
我从日志中获取数据的查询:
The query for me to get the data from the logs:
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+):
Sample result of logs query above(total actual results are in 600+):
CHAR_KEY NAME ITEMNUM
-----------+----------------+-----------
28257 | clarkailey | 14438
894367 | Wolf | 15023
2869858 | HOPEINME | 14437
现在我需要自动将每一行插入到这个查询中:
Now I need to automatically insert each row into this query:
CHAR_KEY NAME ITEMNUM
-----------+----------------+-----------
2869858 | HOPEINME | 14437
(此查询显示了上面插入的第三个示例数据的示例...
有没有办法更快地完成此操作,而不是为每个条目进行此查询?)
(this query shows an example of the 3rd sample data above being inserted...
instead of making this query for each entry is there a way for this to done faster?)
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())
我的问题:
如何自动化这一切,即查询将读取所有日志并逐行插入数据.非常感谢.
How to automate all this, that the query will read all the logs and insert the data row by row. Thank you very much.
我可以为此使用@variables吗?
Can I use @variables for this?
推荐答案
您可以使用以下语法进行插入
You can use the following syntax for inserts
INSERT INTO dbo.Destination (Col1, Col2, Col3)
SELECT Col1, Col2, Col3
FROM dbo.Source
如果您的表具有与目标相同的列或结果集具有与目标相同的列,则不必在 INSERT 中指定列.
If you had tables with the same columns or a result set that had the same columns as your destination, you don't have to specify columns in the INSERT.
INSERT INTO dbo.Destination
SELECT *
FROM dbo.Source
这两个都基于已创建的 Destination 表.这些不与SELECT * INTO dbo.Destination FROM dbo.Source
Both of these are predicated on your Destination table already being created. These are NOT the same as SELECT * INTO dbo.Destination FROM dbo.Source
这篇关于Microsoft SQL Server 从选择查询插入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Microsoft SQL Server 从选择查询插入


- 导入具有可变标题的 Excel 文件 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- SQL 临时表问题 2022-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01