两张表一对多,关联取最新的一条记录
表A: s_price_scheme 存储的是方案表
表B:s_site_reserve 是场地表,
表A和表B是一对多关系
SELECT
sps.id,
cc.created_time,
cc.id AS id2 ,sps.scheme_id
FROM
s_price_scheme sps
left JOIN (
SELECT
a.id,
a.price_scheme_id,
a.created_time
FROM
s_site_reserve AS a
LEFT JOIN ( SELECT MAX( id ) AS id, price_scheme_id FROM s_site_reserve GROUP BY price_scheme_id ) AS b ON a.price_scheme_id = b.price_scheme_id
WHERE
a.id = b.id
) AS cc ON sps.id = cc.price_scheme_id
通过MAX()函数查询分组前数id最大最新的一条数据,因为group by 执行顺序在order by 之前
SELECT
a.id,
a.price_scheme_id,
a.created_time
FROM
s_site_reserve AS a
LEFT JOIN ( SELECT MAX( id ) AS id, price_scheme_id FROM s_site_reserve GROUP BY price_scheme_id ) AS b ON a.price_scheme_id = b.price_scheme_id
WHERE
a.id = b.id
MAX()函数:对字母进行大小判断,返回最大的字符或者字符串值
MAX() 函数还可以返回任意列中的最大值,包括返回字符类型的最大值。在对字符类型的数据进行比较时,按照字符的 ASCII码值大小进行比较,从 a~z,a 的 ASCII 码最小,z 的最大。在比较时,先比较第一个字符,如果相等,继续比较下一个字符,一直到两个字符不相等或者字符结束为止。
Mysql的执行顺序
1.from 查询表
2.join 关联表
3.on 关联判断
4.where 执行条件判断
5.group by 分组
6.avg,sum.... 求和
7.having 分组执行条件判断
8.select 查询字段
9.distinct 去重
10.order by 排序
11.limit 截断