Выберите строки, которые только что вставили - PullRequest
10 голосов
/ 01 декабря 2011

Как я могу получить только что вставленную строку?

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: Может быть, мне нужно использовать хранимую процедуру?

Ответы [ 3 ]

19 голосов
/ 01 декабря 2011

Я не уверен на 100%, что именно вы хотите вернуть .... но в SQL Server есть предложение 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.

Если достаточно просто вернуть результаты в свою таблицу в Mgmt Studio, то используйте предложение OUTPUT! Подробнее о предложении OUTPUT в Books Online

2 голосов
/ 01 декабря 2011

Если вы используете SQL Server

И вы знаете, сколько вставленных строк, то через

SELECT top 2 * FROM LETTRE_VOIT order by primaryKeyId desc

укажите номер вставленной строки вместо 2.

Это может помочь вам, если вы знаете количество вставленных строк, а затем можете предоставить номера с ключевым словом top

2 голосов
/ 01 декабря 2011

Как насчет сохранения записей в переменной перед их вставкой или добавлением поля даты и извлечением их по дате?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...