php - 查询根据一个字段的最大值和另一字段的特定值查找数据

标签 php mysql sql

我的 SQL 技能很少,所以我希望有人能帮助我。我正在编写一个 PHP 脚本,需要在其中执行一些 SQL 查询:

我有一个名为 Product_status 的表,其中包含 3 个 4 列: ID 产品编号 状态日期 状态代码

因此,如果我们考虑 id 为 1000 的产品,该表将包含如下条目:

id    prod_id   status_date            status_code  
1     1000      2015-09-01 08:20:35    100
2     1000      2015-09-01 09:22:40    200
3     1000      2015-09-01 09:35:51    300
4     1000      2015-09-01 09:42:55    400

现在,考虑到 300 是“缺货”的状态代码。我想编写一个查询,对于给定的日期,它为我提供当天结束时未缺货的所有产品。换句话说,如果我查询日期“2015-09-01”,它应该为我提供产品 1000,因为 300 不是该表中该日期该产品的最后一个条目。

我无法编写适用于此的查询:(我的查询是:

select prod_id, status from product_status
where status_code != 300
group by prod_id, status
having date(max(status_date)) = '2015-09-01'

这也会返回给定日期最终状态为 300 以外的产品...任何人都可以帮助纠正我的 SQL 吗?

最佳答案

尝试这个查询

SELECT prod_id, 
SUBSTRING_INDEX(GROUP_CONCAT(status_date ORDER BY status_date DESC), ',', 1) as max_date, 
SUBSTRING_INDEX(GROUP_CONCAT(status_code ORDER BY status_date DESC), ',', 1) as recent_code
FROM product_status
GROUP BY prod_id
HAVING recent_code != '300' AND date(max_date) = '2015-09-01'

关于php - 查询根据一个字段的最大值和另一字段的特定值查找数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32824314/

相关文章:

mysql - 进行插入时获取并使用唯一 ID

sql - 加入三个表然后分组

php - 这个数组有什么问题?

php - 如何 : Non-Facebook-Users post to Facebook page wall

mysql - 加载页面 localhost/phpmyadmin 时出错

sql - 分组依据并添加列

php - 如果id在数组中,vuejs检查复选框

php - Composer Install (own Container) with Docker missing PHP Extensions

php - 如何将不同的html页面值存储到数据库的同一行中?

使用 select 更新 MySQL