簡體   English   中英

如何使用連接表獲取唯一記錄而不使用分組依據

[英]How to get unique records with join tables and without using group by

我想從 2 個表中獲取唯一記錄而不使用Group By而不是我想使用DISTINCT因為當我使用group by它不會返回最后更新的記錄。

我在 Group By 中使用了以下查詢。

SELECT  au.id, o.order_id,o.payment_method, o.order_date,au.article_id FROM `orders` as o INNER JOIN austpost_api_response as au ON  o.order_id = au.order_id  where o.shipment_status = 1 AND au.active_status = 1 AND o.order_status = 0 group by o.order_id
ORDER BY `au`.`id`  DESC

它返回唯一的 order_id 但沒有獲得最后更新的 order_id

例如...

Order number 1212 有四個article_id id 45,76,47,48 但是一旦我將它與group by一起使用group by它就會顯示唯一的訂單 ID,但沒有獲得 48 最后更新的記錄,而不是返回 45。

是否可以使用DISTINCT關鍵字獲得。

如果您的 mysql 版本為 8.0+,則可以使用 row_number() 函數

select * from
(
SELECT  au.id, o.order_id,o.payment_method, o.order_date,au.article_id,row_number() over(partition by o.order_id order by o.order_date desc) as rn
FROM `orders` as o INNER JOIN austpost_api_response as au ON  o.order_id = au.order_id  where o.shipment_status = 1 AND au.active_status = 1 AND o.order_status = 0 
)A where rn=1

或者您可以嘗試使用相關子查詢

SELECT  au.id, o.order_id,o.payment_method, o.order_date,au.article_id
FROM `orders` as o INNER JOIN austpost_api_response as au ON  o.order_id = au.order_id  
where o.shipment_status = 1 AND au.active_status = 1 AND o.order_status = 0 and o.order_date in 
(
  select max(o.order_date) from `orders` o1 where o.order_id = o1.order_id and o1.order_status = 0
)

如果我理解正確的話,每個訂單的響應都有多行——並且您需要每個訂單的最新響應。

您想過濾數據,而不是聚合數據。 我認為這可以滿足您的要求:

SELECT au.id, o.order_id, o.payment_method, o.order_date, au.article_id
FROM orders o INNER JOIN
     austpost_api_response au
     ON o.order_id = au.order_id  
WHERE o.shipment_status = 1 AND
      au.active_status = 1 AND
      o.order_status = 0 AND
      au.id = (SELECT MAX(au2.id)
               FROM austpost_api_response au2
               WHERE au2.order_id = au.order_id AND
                     au2.active_status = 1
              )
ORDER BY au.id DESC;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM