如何检索刚插入的行?
INSERT INTO LETTRE_VOIT select rsVoit.NOID, NO_ORDRE, rsOrdre.CODE_DEST, rsOrdre.MODAL_MODE, rsOrdre.MODAL_PORT, CASE rsOrdre.MODAL_PORT WHEN 'false' THEN 'D' ELSE 'P' END, rsOrdre.LIVRS_EXPRS, CASE rsOrdre.LIVRS_EXPRS WHEN 'false' THEN 'L' ELSE 'E' END, rsOrdre.ENLEV_UNITE, LIBELLE, NBR_COLIS,POID,ENLEV_CREMB,ENLEV_DECL from ORDRE rsOrdre inner join ( select CODE_DEST,MODAL_MODE, MODAL_PORT, LIVRS_EXPRS,ENLEV_UNITE, ROW_NUMBER() over (order by CODE_DEST) as NOID from ORDRE group by CODE_DEST,MODAL_MODE,MODAL_PORT,LIVRS_EXPRS,ENLEV_UNITE ) rsVoit on rsVoit.CODE_DEST = rsOrdre.CODE_DEST and rsVoit.MODAL_MODE = rsOrdre.MODAL_MODE and rsVoit.MODAL_PORT = rsOrdre.MODAL_PORT and rsVoit.LIVRS_EXPRS = rsOrdre.LIVRS_EXPRS and rsVoit.ENLEV_UNITE = rsOrdre.ENLEV_UNITE LEFT JOIN T_UNITE ON rsOrdre.ENLEV_UNITE = T_UNITE.NOID WHERE (STATUT_ORDRE = 3) AND IS_PRINT = 'false' AND (TRANSPORTEUR IN (SELECT ParsedString From dbo.ParseStringList(@Trans))) order by rsVoit.NOID, NO_ORDRE SELECT * FROM LETTRE_VOIT WHERE ???
例如:
我插入了2,返回了2
然后插入3,我想返回3而不是5行。
提前致谢。
史蒂夫
PS:可能需要使用存储过程吗?
我不是100%不确定您到底想要什么…。但是SQL Server有一个OUTPUT子句可以从INSERTandUPDATE和DELETEstatement中输出内容:
OUTPUT
INSERT
UPDATE
DELETE
INSERT INTO dbo.YourTable(col1, col2, ..., colN) OUTPUT Inserted.Col1, Inserted.IDCol, Inserted.Col17 VALUES(val1, val2, ...., valN)
在这里,您正在插入值和的插入值IDCol(例如INT IDENTITY列)Col1和Col17。
IDCol
Col1
Col17
如果仅将结果返回到Mgmt Studio中的网格就足够了- 那么请使用该OUTPUT子句!在在线图书上阅读有关该条款的更多信息OUTPUT