【发布时间】:2011-06-10 17:43:07
【问题描述】:
鉴于我有两张桌子
- 客户(id int,用户名 varchar)
- 订单(customer_id int, order_date datetime)
现在我想根据客户表中提供的客户信息插入订单表。
有几种方法可以解决这个问题。
首先 - 我可以将客户信息查询到一个变量中,然后在 INSERT 语句中使用它。
DECLARE @Customer_ID int
SELECT @Customer_ID = id FROM Customer where username = 'john.smith'
INSERT INTO Orders (customer_id, order_date) VALUES (@Customer_ID, GETDATE())
第二种方法是结合使用 INSERT 和 SELECT 查询。
INSERT INTO Orders (customer_id, order_date)
SELECT id, GETDATE() FROM Customers
WHERE username = 'john.smith'
所以我的问题是,就速度和开销而言,哪种方法更好,为什么?我知道如果我们从 Customer 表中查询到大量信息,那么第二种方法要好得多。
附言我在一次技术面试中被问到这个问题。
【问题讨论】:
-
你是如何回答采访中的问题的?
-
我给了他们一个和你一样的答案。就是想听听大家的意见。感谢您的回复。
标签: sql sql-server