SQLJoin:选择一对多关系中的最后一个记录。假设我有一张顾客表和一张购物表。每次购买都属于一个客户。我想在一个SELECT语句中获得所有客户的列表以及他们最后一次购买。什么是最佳做法?对建立索引有什么建议吗?请在您的答复中使用以下表/列名称:顾客:ID,姓名采购:ID,Customer_id,Item_id,日期在更复杂的情况下,通过将最后一次购买放到Customer表中,会(从性能上讲)是否有利于数据库的去或化?如果(购买)id保证按日期排序,那么这些语句是否可以通过使用以下内容来简化LIMIT 1?
3 回答
温温酱
TA贡献1752条经验 获得超4个赞
SELECT c.*, p.*FROM customer c INNER JOIN (SELECT RANK() OVER (PARTITION BY customer_id ORDER BY date DESC) r, * FROM purchase) pON (c.id = p.customer_id)WHERE p.r = 1
添加回答
举报
0/150
提交
取消