Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Bergabung ke baris pertama

SELECT   Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM     Orders
JOIN     LineItems
ON       LineItems.LineItemGUID =
         (
         SELECT  TOP 1 LineItemGUID 
         FROM    LineItems
         WHERE   OrderID = Orders.OrderID
         )

Di SQL Server 2005 dan di atasnya, Anda bisa mengganti INNER JOIN dengan CROSS APPLY :

SELECT  Orders.OrderNumber, LineItems2.Quantity, LineItems2.Description
FROM    Orders
CROSS APPLY
        (
        SELECT  TOP 1 LineItems.Quantity, LineItems.Description
        FROM    LineItems
        WHERE   LineItems.OrderID = Orders.OrderID
        ) LineItems2

Harap diperhatikan bahwa TOP 1 tanpa ORDER BY tidak deterministik:kueri ini Anda akan mendapatkan satu item baris per pesanan, tetapi tidak ditentukan yang mana.

Beberapa permintaan kueri dapat memberi Anda item baris yang berbeda untuk pesanan yang sama, meskipun yang mendasarinya tidak berubah.

Jika Anda ingin urutan deterministik, Anda harus menambahkan ORDER BY klausa ke kueri terdalam.

Contoh sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Terbaik untuk menghancurkan data XML ke dalam kolom database SQL Server

  2. Apakah tampilan lebih cepat daripada kueri sederhana?

  3. Mendaftar SQL Server dalam Transaksi XA Terdistribusi

  4. Urutan eksekusi klausa Group By, Have, dan Where di SQL Server?

  5. 5 tip cepat yang berguna untuk SQL Server Production DBAs