SELECT customer_id,customer_name,product_name AS latest_order FROM( SELECT a.customer_id,b.customer_name,c.product_name,a.order_date, ROW_NUMBER() OVER (PARTITION BY a.customer_id ORDER BY a.order_date DESC) AS rk FROM orders AS a JOIN customers AS b ON a.customer_id = b.customer_id JOIN products AS c ON a.product_id = c.product_id ) AS ranked_tb WHERE rk = 1 ORDER BY customer_id ASC
此题ez,先将三表连接保留customer_id,customer_name,product_name,order_date,再用ROW_NUMBER (DESC)分组排序找出最近日期,第二层SELECT选出rk为1的就好了