我需要用最近的 exp-date 和 sales-price 過濾資料,而不重復 id_product,我嘗試解決這個問題,但我找不到正確的方法
這是 Navicat 查詢和結果
SELECT
product_exp_date.idproduct,
product_exp_date.exp_date,
product_exp_date.selling_price
FROM
product
INNER JOIN
product_exp_date
ON
product.idproduct = product_exp_date.idproduct
GROUP BY
product_exp_date.exp_date
idproduct exp_date selling_price
8 2022-11-01 300
5 2022-06-08 370
5 2022-06-09 350
7 2022-07-01 380
5 2022-09-20 450
6 2022-10-08 140
6 2023-06-08 150
我已經嘗試過這種方式
GROUP BY
product_exp_date.idproduct
但它給了我不同的結果
idproduct exp_date selling_price
5 2022-06-09 350
6 2023-06-08 150
7 2022-07-01 380
8 2022-11-01 300
但我需要得到這個結果
idproduct exp_date selling_price
5 2022-06-08 370
6 2022-10-08 140
7 2022-07-01 380
8 2022-11-01 300
產品表
productid product_name
5 A
6 B
7 C
8 D
PRODUCT_EXP_DATE TABLE
idproduct_exp_date idproduct exp_date selling_price
1 5 2022-06-09 350
2 6 2023-06-08 150
3 5 2022-06-08 370
4 5 2022-09-20 450
5 6 2022-10-08 140
6 7 2022-07-01 380
7 8 2022-11-01 300
有時我的查詢有一些錯誤,無論如何我需要幫助來解決這個問題,謝謝。
uj5u.com熱心網友回復:
首先,讓我糾正你;那不是 Navicat 查詢,那是 MySQL 查詢。現在,這是兩件不同的事情。MySQL 是一個資料庫,而 Navicat 是一個工具 - 相當于 MySQL Workbench、PHPMyAdmin 或 SQLyog 等其他工具。它是為了讓您可以通過 GUI 執行資料庫功能。
接下來是,我將給出兩個查詢,您可以根據您的 MySQL 版本使用它們。第一個是這樣的:
SELECT p1.idproduct,
p1.exp_date,
p1.selling_price
FROM product_exp_date p1
JOIN (
SELECT idproduct,
MIN(exp_date) AS minexp
FROM product_exp_date
GROUP BY idproduct
) AS p2
ON p1.idproduct=p2.idproduct
AND p1.exp_date=p2.minexp
ORDER BY p1.idproduct;
您應該能夠在任何版本的 MySQL 或 MariaDB 中運行上述查詢。這個想法是得到最小的exp_dategroup by idproduct,然后將其作為子查詢,product再次將它與 table 連接以匹配這兩個提取的值,以便我們可以提取selling_price.
第二個查詢:
SELECT idproduct,
exp_date,
selling_price
FROM (
SELECT idproduct,
exp_date,
selling_price,
ROW_NUMBER() OVER (PARTITION BY idproduct ORDER BY exp_date) rn
FROM product_exp_date
) AS p1
WHERE rn=1;
這只能在支持視窗函式的 MySQL v8 或 MariaDB 10.2 (及更高版本)上運行。這個想法與之前的查詢有點不同,在這里,我們將專注于ROW_NUMBER()根據特定條件生成 ,然后將其作為子查詢并僅添加一個WHERE. 與之前的查詢相比,這不需要JOIN.
如您所見,我沒有考慮該product表,因為我沒有看到它在您的原始查詢中的任何地方使用,但是如果您確實需要加入它,并且您不知道如何加入,只需給我一個發表評論,我會看看我能做什么。
演示小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/437150.html
