我们说这个@TempTable
只有2列ProductName
和TempID
:
ProductName | TempID
------------+------
GTX 1080 | NULL
GTX 1080Ti | NULL
RX 580 | NULL
我将使用以下命令将此插入TblProduct
(2列:ProductName
和ID
):
INSERT INTO TblProduct (ProductName)
OUTPUT INSERTED.ID INTO @Test123(ID)
SELECT ProductName
FROM @TempTable
是否保证@Test123
的输出结果的顺序正确?这意味着如果结果是1,2和3。
是否可以更新TempID
@TempTable
中的ID
@Test123
?如果有,怎么样?我在想UPDATE ... SELECT ...
答案 0 :(得分:2)
不,它根本没有保证。
关系数据库中的表本质上是未排序的 - 换句话说 - 记录没有固有的顺序。
但是,您可以使用output子句输出多个列,因此对于示例数据,您可以输出ProductName
和ID
(当然,这意味着表变量{{ 1}}必须(至少)这两列):
@Test123
答案 1 :(得分:1)
如果您希望行按字母顺序显示,请在示例中说:
select ProductName
from TblProduct
order by ProductName;
如果您想要其他订单,那么您需要一个定义该订单的列,以便您可以在select语句中输入相应的订单。例如,如果要按插入顺序取回行,请将表定义为:
create table TblProduct
(
id int identity(1,1) not null,
ProductName varchar(20),
tempID int
);
然后
select ProductName
from TblProduct
order by id;