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

MySQL LIMIT trong một truy vấn con tương ứng

Đây là một biến thể của greatest-n-per-group vấn đề thường xuyên xảy ra.

Bạn muốn biểu mẫu hàng đơn FinishTierPrice (gọi nó là p1 ), khớp với FinishOption và với Qty lớn nhất, nhưng vẫn nhỏ hơn hoặc bằng Qty của ProductOptionTier.

Một cách để làm điều này là cố gắng khớp với hàng thứ hai (p2 ) từ FinishTierPrice sẽ có cùng một FinishOption và một Số lượng lớn hơn. Nếu không có hàng nào như vậy tồn tại (sử dụng một liên kết ngoài và kiểm tra xem đó là NULL), thì hàng được tìm thấy bởi p1 là vĩ đại nhất.

SELECT Product.Name, ProductOption.Name, a.Qty, a.Price, SheetSize.UpgradeCost,
        FinishType.Name, FinishOption.Name, FinishTierPrice.Qty, FinishTierPrice.Price
FROM `Product`
    JOIN `ProductOption`
        ON Product.idProduct = ProductOption.Product_idProduct
    JOIN `ProductOptionTier` AS a
        ON a.ProductOption_idProductOption = ProductOption.idProductOption
    JOIN `PaperSize`
        ON PaperSize.idPaperSize = ProductOption.PaperSize_idPaperSize
    JOIN `SheetSize`
        ON SheetSize.PaperSize_idPaperSize = PaperSize.idPaperSize
    JOIN `FinishOption`
        ON FinishOption.Product_idProduct = Product.idProduct
    JOIN `FinishType`
        ON FinishType.idFinishType = FinishOption.Finishtype_idFinishType
    JOIN `FinishTierPrice` AS p1
        ON p1.FinishOption_idFinishOption = FinishOption.idFinishOption
        AND p1.Qty <= a.Qty
    LEFT OUTER JOIN `FinishTierPrice` AS p2
        ON p2.FinishOption_idFinishOption = FinishOption.idFinishOption
        AND p2.Qty <= a.Qty AND (p2.Qty > p1.Qty OR p2.Qty = p1.Qty 
            AND p2.idFinishTierPrice > p1.idFinishTierPrice)
WHERE Product.idProduct = 1
    AND p2.idFinishTierPrice IS NULL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn MySQL - Bản ghi từ hôm nay đến 30 ngày trước

  2. Kết nối với MariaDB từ ứng dụng Java trong NetBeans trên Linux (Mageia)

  3. Sắp xếp truy vấn MySQL theo Vĩ độ / Kinh độ

  4. Làm cách nào để kết nối với cơ sở dữ liệu MySQL từ iPhone?

  5. Cách hoạt động của hàm MID () trong MySQL