2023年7月11日 07:45 by wst
database在实际业务中经常碰到,请找出价格最低的那条数据的所有信息。
筛选最低的价格,然后再根据价格和表本身做表连接。如下:
select s1.*
from specification s1
inner join (
select cid, min(price) as price
from specification
group by
cid
) s2 on (
s1.cid = s2.cid
and s1.price = s2.price
)
这个代码运行了好长时间,直到有个用户创建了价格相同的两条数据,于是出现了bug。怎么解决接往下看:
因为在创建数据的时候,每条记录都有唯一ID,那么我可以根据这个筛选。
select s1.*
from specification s1
inner join (
select cid, min(price) as price, min(id) as sid
from specification
group by
cid,price
) s2 on (
s1.cid = s2.cid
and s1.id = s2.sid
)
后记:做完后发现不对,于是分组时加上了price字段。
勉励自己,同时给后来人提供帮助!