mysql伪列

-- 工作中遇到分组中取最大值的问题
-- 使用MYSQL,有些情况下,MYSQL需要先降序排序后分组,才能取到分组前中的给定值,
-- 之前的思路也一直是先子排序,后分组,想到排序可能影响查询性能,查阅资料,
-- 发现MYSQL伪列(id)的一个很有用的用途,就是可以在子查询中做为主查询的"标记"

-- id 为t_product_detail主键且自增
SELECT l.* FROM t_product_detail l, (SELECT MAX(t.id) FROM t_product_detail t GROUP BY t.productId) AS o WHERE l.id = o.id;

-- 修改前的sql为
SELECT l.* FROM t_product_detail l, (SELECT o.id FROM (SELECT t.id, t.productId FROM t_product_detail t ORDER BY t.id DESC) AS o GROUP BY o.productId) AS i WHERE l.id = i.id;

-- 在t_product_detail中有同productId的情况,使用version区分最新版本
-- 实际项目中不允许使用'*',需要使用具体字段代替, 这里使用'*'仅表示省略

你可能感兴趣的:(mysql)