Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tham gia vào hàng đầu tiên

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

Trong SQL Server 2005 trở lên, bạn chỉ có thể thay thế INNER JOIN với 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

Xin lưu ý rằng TOP 1 không có ORDER BY không mang tính xác định:truy vấn này bạn sẽ nhận được cho bạn một chi tiết đơn hàng cho mỗi đơn đặt hàng, nhưng nó không được xác định sẽ là chi tiết đơn hàng nào.

Nhiều lệnh gọi của truy vấn có thể cung cấp cho bạn các chi tiết đơn hàng khác nhau cho cùng một đơn hàng, ngay cả khi cơ bản không thay đổi.

Nếu bạn muốn thứ tự xác định, bạn nên thêm ORDER BY mệnh đề cho truy vấn trong cùng.

Ví dụ 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. Chúng ta có thể chuyển các tham số cho một dạng xem trong SQL không?

  2. Biết cách khôi phục bảng đã xóa trong SQL Server 2012 mà không cần sao lưu

  3. Giới thiệu về các hàm do người dùng xác định trong SQL Server

  4. Làm thế nào để chuyển các tham số Table-Valued từ java sang thủ tục được lưu trữ trên máy chủ sql?

  5. Kiểu văn bản SQL Server so với kiểu dữ liệu varchar