天哪!我做错了什么?
declare @WTF TABLE (
OrderItemId int
)
SELECT TOP 20 OrderItemId as OrderItemId INTO [@WTF] FROM ac_OrderItems
SELECT * FROM [@WTF]
问题 A:这会创建一个名为 @WTF 的 PHYSICAL 表。为什么??我以为这只是在内存中?!
问题 B:最后一行代码,如果我确实从 @WTF... 中选择 * 而没有 [ ],则不会返回任何内容。 []有什么意义?
我需要认真的帮助。我快疯了!
提前致谢。
最佳答案
What you experience is by design :
SELECT…INTO creates a new table in the default filegroup and inserts the resulting rows from the query into it.
替代方案是:
- 不定义
WTF
表,并依赖行为自动创建它 使用现有代码,但将
SELECT INTO
更改为 INSERT:INSERT INTO @WTF (orderitemid) SELECT TOP 20 oi.orderitemid FROM ac_ORDERITEMS oi
请注意,使用 TOP
时,您应该定义 ORDER BY
子句以确保返回数据的一致性。
关于sql - T-SQL 表变量创建物理表!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2420396/