如何检索刚刚插入的行?
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行。
提前致谢。
Stev
PS:我可能需要使用存储过程吗?
答案 0 :(得分:18)
我不是100%确定你想要什么回来....但是SQL Server有一个OUTPUT
子句可以输出来自INSERT
和UPDATE
以及{{1}的内容语句:
DELETE
在这里,您要为INSERT INTO dbo.YourTable(col1, col2, ..., colN)
OUTPUT Inserted.Col1, Inserted.IDCol, Inserted.Col17
VALUES(val1, val2, ...., valN)
插入值和插入的值(例如,INT IDENTITY列),IDCol
和Col1
。
如果只是在Mgmt Studio中将结果返回到您的网格中就足够了 - 那么请使用Col17
子句!阅读更多about the OUTPUT
clause on Books Online
答案 1 :(得分:2)
如何在插入变量或添加日期字段并按日期检索变量之前保存变量?
答案 2 :(得分:2)
如果您使用的是SQL Server
你知道插入了多少行然后通过
SELECT top 2 * FROM LETTRE_VOIT order by primaryKeyId desc
将行数插入2
。
它可能对您有帮助,如果您知道插入的行数,那么您可以使用top关键字提供数字