两表关联,取B表满足条件的第一条数据

来源:互联网 发布:js时间格式化插件 编辑:程序博客网 时间:2024/06/06 09:37

例如有两个表goods和prices,商品表中的一条商品信息会对应价格表中的多条价格信息,现在要根据商品表查询其商品对应的可用最新的价格,即要满足价格的生效日期必须在商品上市之前,如果有多个价格,就选取最后生效的那个价格。

goods:商品表

序号商品名称上市日期1iphone62015-10-012iphone62016-08-013iphone62017-09-01

prices:价格表

序号商品名称单价生效日期6iphone665002015-09-157iphone660002016-06-158iphone658002017-08-15


希望得到的结果是:

货物序号商品名称上市日期单价单价生效日期1iphone62015-10-0165002015-09-152iphone62016-08-0160002016-06-153iphone62017-09-0158002017-08-15

查询sql如下:

select A.*,B.price,B.effective_date from goods A left join prices B 
on A.goods_name = B.goods_name and A.launch_date > B.effective_date
and B.effective_date = (select max(effective_date) from prices where A.goods_name = goods_name and A.launch_date > effective_date)
order by A.id

语句中用来筛选满足B表中满足条件的第一条这段是语句难点,位于上述第三行。


阅读全文
1 0
原创粉丝点击