假设我有一张顾客表和一张购买表。
客户可以多次购物。有些时候,客户购买旧商品以及购物功能。
在这种情况下,我需要显示最新的旧购买。如果客户只购买功能,我应该展示一个。
我写过查询,但我认为我们可以改进什么是最佳做法?有关此查询的任何建议吗?
考虑以下表格:
查询
SELECT c.*, p.*
FROM customer c
INNER JOIN purchase p
ON p.id =
(IF((SELECT Count(*) FROM purchase p1 WHERE p1.customer_id = c.id) <= 1,
(SELECT p2.id FROM purchase p2 WHERE p2.customer_id = c.id),
(SELECT p3.id FROM purchase p3 WHERE p3.customer_id=c.id AND
p3.effective_from_date < now()
ORDER BY id DESC LIMIT 1)))