php - 我需要用 php - mysql 列出产品的唯一最新版本
问题描述
我只是想列出产品的唯一最新版本。并非所有版本都具有相同的产品名称。
*表不是那么重要,我只想要代码来获取数据。
*表不是那么重要,我只想要代码来获取数据。
这是我的代码,但没有列出任何内容:
include("databaseinfo.php");
$sql = "SELECT product_name,release_date,version FROM product GROUP BY product_name ORDER BY product_ID DESC";
$result = mysqli_query($conn,$sql);
while ($b=mysqli_fetch_array($result,MYSQLI_ASSOC)){
echo $b['product_name']." ".$b['release_date']." ".$b['version'];
}
我的产品表:
解决方案
一种选择是使用子查询进行过滤:
select product_name, release_date, version
from product p
where release_date = (
select max(p1.release_date)
from product p1
where p1.product_id = p.product_id
)
如果您正在运行 MySQL 8.0,您还可以使用rank()
:
select product_name, release_date, version
from (
select p.*, rank() over(partition by product_id order by release_date desc)
from product
) t
where rn = 1
这假设product_id
唯一标识每个产品(因此您的表将有几行每个product_id
) - 如果不是这种情况,请product_name
改用。
推荐阅读
- c# - 从 Visual Studio 中的自定义 C# 编译器记录时克服 MSBuild 冗长
- java - 我的 java 程序在 netbeans 中运行,但不会在命令中或通过 jar 文件运行。我究竟做错了什么?
- java - Hibernate 无法获取子实体
- onenote - 将纵向和横向打印交替打印到 OneNote
- scala - 使用 scala 宏来操作变量声明
- python - 如何在数据框列中找到第一个和最后一个元素并修剪这些元素之间的值
- graphql - Nestjs / GraphQL - Playground 为查询返回 Null 错误。我的解析器?
- python - 关于在 Python 中的同一类属性中是否使用下划线
- java - 方法中永远不会抛出异常“java.io.FileNotFoundException”
- android - Firebase 遍历整个数据库