[英]T-SQL query to select from one table and insert into another
在將此問題標記為重復之前,請先閱讀問題。
我試圖將行插入到具有5列的表中。 我希望其中三列來自另一個表,我將使用選擇查詢來讀取該表。
INSERT INTO tbl.Log (
LogDate,
Object,
Count,
Creator,
LastUpdate)
SELECT TOP 1
GETUTCDATE(),
Object,
Count, -- I need to +1 to this
'John Smith',
LastUpdate
FROM tbl.Objects
WHERE ObjectID = '123'
ORDER BY LastUpdate DESC
我可以在這里看到我做錯了什么:
GETUTCDATE()
不應進入SELECT,因為它不是列名。 它去哪兒了? 'John Smith'
也是如此 我可以通過執行兩個單獨的查詢並將SELECT
的數據解析為INSERT
查詢來手動完成此操作,但是我正在嘗試改進SQL。
您可以選擇不屬於表的值,並在insert
過程中對列進行算術運算。
INSERT INTO tbl.Log (
LogDate,
Object,
Count,
Creator,
LastUpdate)
SELECT TOP 1
GETUTCDATE(),
Object,
Count+1
'John Smith',
LastUpdate
FROM tbl.Objects
WHERE ObjectID = '123'
ORDER BY LastUpdate DESC
了解使用兩個單獨的查詢進行insert
的想法將導致兩行。
選擇表中不存在的值沒有錯,每個RDBMS都接受它。
另外,count + 1是什么意思? 日志表中的計數是多少? 如果是這樣的話:
INSERT INTO tbl.Log (
LogDate,
Object,
Count,
Creator,
LastUpdate)
SELECT TOP 1
GETUTCDATE(),
Object,
(SELECT MAX(Count) FROM tbl.log),
'John Smith',
LastUpdate
FROM tbl.Objects
WHERE ObjectID = '123'
ORDER BY LastUpdate DESC
如果要表示Objects
表中的計數,則用count+1
替換子選擇,但這似乎可以自己完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.