php - 如何从多次输入类别的表中选择每个类别的一项

标签 php mysql

产品表

_________________________________

|id |名称|类别|日期|

--------------------------------

|1 |p1 |1 |13586486|

--------------------------------

|2 |p2 |2 |13586445|

--------------------------------

|3 |p3 |1 |13567456|

--------------------------------

|5 |p5 |3 |13586422|

--------------------------------

|6 |p6 |3 |13586678|

--------------------------------

|7 |p7 |1 |13586495|

-------------------------------- 不知何故,我的表格看起来如此,现在我的问题是如何选择每个类别的一个产品,该产品是该类别中的最新产品,这在单个查询中是否可能? 我尝试了很多东西,但太长了...请帮忙

最佳答案

也许是这样的(如果您想要按照最高日期):

SELECT
    *
FROM
    Product AS t1
    JOIN 
    (
    SELECT 
        MAX(t.date) AS date,
        t.category
    FROM 
        Product AS t
    GROUP BY
        t.category
    )
    AS maxCat 
    ON maxCat.date=t1.date
    AND maxCat.category=t1.category

如果您想要最高的产品 ID,那么您可以这样做:

SELECT
    *
FROM
    Product AS t1
    JOIN 
    (
    SELECT 
        MAX(t.id) AS id,
        t.category
    FROM 
        Product AS t
    GROUP BY
        t.category
    )
    AS maxCat 
    on maxCat.id=t1.id

关于php - 如何从多次输入类别的表中选择每个类别的一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670659/

相关文章:

php - Woocommerce 单个产品自定义选项卡上显示的带有所见即所得字段的元框

php - 如何在 PHP 中将数组转换为对象?

PHP/JavaScript - 检测哪些用户当前打开了页面

mysql计算新列的出现次数

mysql - Centos7 上无法从 PhpMyadmin 连接到 Mysql

php - Laravel 输出与 MySQL 查询不同的输出

mysql - 比较同一张表中的两个元素并返回差异/缺失数据

php - 我只是找不到此 SQL 查询中的语法错误

php - 需要在单独的文件中将值从 javascript 传递到 php

mysql - 在 MySql 中使用 REGEXP 嵌套 SELECT