gpt4 book ai didi

mysql - 将两个具有多个条件和一个最大条件的 sql 表组合在一起的最佳方法

转载 作者:行者123 更新时间:2023-11-29 07:32:51 24 4
gpt4 key购买 nike

我有两个表: Material 和库存。

我想获取所有 Material 的列表及其最新库存(如果有),否则仅为零。

表格 - Material

id        | material    | 
==========================
1 |Lily - Blue
2 |Lily - Orange
3 |Lily - White
4 |Rose - Blue
5 |Rose - Orange
6 |Rose - White

表格 - 库存

id        | date      | material   | final_stock | entry_time           | 
=========================================================================
1 |2018-05-18 |Lily - Blue | 30 | 2018-05-18 09:06:48 |
2 |2018-05-18 |Lily - white| 10 | 2018-05-18 10:32:27 |
3 |2018-05-18 |Lily - Blue | 90 | 2018-05-18 15:30:31 |

我的查询:

select materials.material, max(inventory.final_stock) from materials left join 
inventory on materials.material = inventory.material

输出

material    | max(inventory.final_stock)| 
========================================
Lily - Blue |90

需要输出>>

date       | material     | max(inventory.final_stock)| 
======================================================
2018-05-18 | Lily - Blue |90
2018-05-18 | Lily - Orange|0
2018-05-18 | Lily - white |10
2018-05-18 | Rose - Blue |0
2018-05-18 | Rose - Orange|0
2018-05-18 | Rose - white |0

最佳答案

一种方法是相关子查询:

select m.*,
coalesce( (select i.final_stock
from inventory i
where i.material = m.material
order by i.entry_time desc
limit 1
), 0) as final_stock
from materials m;

请注意,在表中使用 id 的主要原因之一是它可以用于外键关系。因此,inventory 应该有一个 material_id 列,而不是 material 列。

关于mysql - 将两个具有多个条件和一个最大条件的 sql 表组合在一起的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50416851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com