我需要列出带有 php - mysql 的产品的唯一最新版本
I need to list the only latest versions of the products with php - mysql
我只是想列出产品的最新版本。并非所有版本都具有相同的产品名称。
所以这个:
而不是这个:
*table不是那么重要我只是想要代码获取数据。
*table不是那么重要我只是想要代码获取数据。
这是我的代码,但没有列出任何内容:
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'];
}
我的产品table:
一个选项是使用子查询进行过滤:
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
)
如果你是运行MySQL8.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
唯一标识每个产品(因此您的 table 每个 product_id
会有几行)- 如果不是这种情况,请改用 product_name
.
我只是想列出产品的最新版本。并非所有版本都具有相同的产品名称。
所以这个:
而不是这个:
*table不是那么重要我只是想要代码获取数据。
*table不是那么重要我只是想要代码获取数据。
这是我的代码,但没有列出任何内容:
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'];
}
我的产品table:
一个选项是使用子查询进行过滤:
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
)
如果你是运行MySQL8.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
唯一标识每个产品(因此您的 table 每个 product_id
会有几行)- 如果不是这种情况,请改用 product_name
.