[英]How can I order by the newest record from more 1 one table
我有3個項目的活動。 查看,頂和評論。 我想根據最新活動以及在每個項目中完成的活動獲取項目列表。
我試圖為多個字段分配一個別名,並按以下順序使用它...但是失敗了...
我怎樣才能做到這一點?
SELECT item_name, item_view_date AS date, item_like_date AS date, item_comment_date AS date
FROM item
LEFT JOIN item_like ON like_item_id = item_id
LEFT JOIN item_comment ON comment_item_id = item_id
LEFT JOIN item_view ON view_item_id = item_id
GROUP BY item_id
ORDER BY date
您可以使用MySQL GREATEST()
函數返回所提供的最大元素:
SELECT item_name, MAX(item_view_date) AS date1, MAX(item_like_date) AS date2, MAX(item_comment_date) AS date3
FROM item
LEFT JOIN item_like ON like_item_id = item_id
LEFT JOIN item_comment ON comment_item_id = item_id
LEFT JOIN item_view ON view_item_id = item_id
GROUP BY item_name
ORDER BY GREATEST(COALESCE(date1,date2,date3),
COALESCE(date2,date1,date3),
COALESCE(date3,date1,date2))
如您所見,我在每個MAX(date)
上都添加了MAX(date)
,因為您沒有指定聚合函數就可以加入並使用GROUP BY
子句。 通常,必須在group by子句中指定每個列,或者使用聚合函數。
然后是COALESCE()
部分,因為您要進行LEFT
連接,所以可能會有NULL
值,因此-使用COALESCE()
消除空值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.