2011-12-01 22 views
9

Làm cách nào tôi có thể truy xuất hàng vừa chèn?Chọn các hàng vừa chèn

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 ??? 

Ví dụ:

tôi chèn 2, nó quay trở lại 2

và sau đó tôi đưa 3, tôi muốn quay trở lại 3 thay vì 5 hàng.

Xin cảm ơn trước.

Stev

PS: Tôi có thể cần sử dụng quy trình được lưu trữ không?

+2

RDBMS nào? ..... –

+0

SQL Server 2008 – user609511

Trả lời

16

Tôi không chắc chắn 100% chính xác những gì bạn muốn trở lại .... nhưng SQL Server có một khoản OUTPUT có thể sản xuất các công cụ từ INSERTUPDATEDELETE báo cáo:

INSERT INTO dbo.YourTable(col1, col2, ..., colN) 
OUTPUT Inserted.Col1, Inserted.IDCol, Inserted.Col17 
VALUES(val1, val2, ...., valN) 

Ở đây, bạn' giá trị chèn lại và giá trị được chèn cho IDCol (ví dụ: cột INT IDENTITY), Col1Col17.

Nếu chỉ lấy lại kết quả vào lưới của bạn trong Mgmt Studio là đủ tốt - sau đó sử dụng mệnh đề OUTPUT! Read more about the OUTPUT clause on Books Online

+1

Cảm ơn đó là exacly những gì tôi muốn. – user609511

2

Làm thế nào để lưu các bản ghi trong một biến trước khi chèn chúng hoặc thêm trường ngày và truy xuất chúng theo ngày?

+0

không phải là idee xấu, tôi sẽ nghĩ về nó – user609511

0

Nếu bạn đang sử dụng SQL Server

Và bạn biết có bao nhiêu hàng chèn sau đó đi qua

SELECT top 2 * FROM LETTRE_VOIT order by primaryKeyId desc 

đặt số lượng hàng chèn vào vị trí của 2.

Nó có thể giúp bạn, Nếu bạn biết số lượng hàng chèn vào, và sau đó bạn có thể cung cấp các số với từ khóa hàng đầu

+0

không phải là idee xấu, vấn đề tôi không biết có bao nhiêu hàng chèn vào. điều đó có nghĩa là tôi đã thực hiện SQL: 1. để chèn và trả lại số hàng đã chèn 2. CHỌN TOP – user609511

+0

Sau đó đi qua, @coconut answer – subodh

+0

Điều này sẽ không hoạt động trừ khi bạn biết chính xác có bao nhiêu hàng bạn đang chèn (có thể ' t sử dụng một biến trong TOP). – rainabba

Các vấn đề liên quan