Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从数据库类别中获取最新记录?_Php_Mysql - Fatal编程技术网

Php 如何从数据库类别中获取最新记录?

Php 如何从数据库类别中获取最新记录?,php,mysql,Php,Mysql,我有一个名为images的表 这是: +------------------+---------------+----------------------+ | iid | category | imagename | uploaddate | +------------------+---------------+----------------------+ | 1 | cat1 | 123.png | 2013-01-01 01:

我有一个名为images的表

这是:

+------------------+---------------+----------------------+
| iid |  category  |   imagename   |       uploaddate     |
+------------------+---------------+----------------------+
|  1  |    cat1    |    123.png    | 2013-01-01 01:01:01  |
|  2  |    cat2    |    456.png    | 2013-01-01 01:01:02  |
|  3  |    cat2    |    789.png    | 2013-01-01 01:01:03  |
|  4  |    cat3    |    001.png    | 2013-01-01 01:01:04  |
|  5  |    cat3    |    002.png    | 2013-01-01 01:01:05  |
|  6  |    cat3    |    002.png    | 2013-01-01 01:01:06  |
|  7  |    cat4    |    004.png    | 2013-01-01 01:01:07  |
|  8  |    cat4    |    005.png    | 2013-01-01 01:01:08  |
|  9  |    cat4    |    006.png    | 2013-01-01 01:01:09  |
|  10 |    cat4    |    007.png    | 2013-01-01 01:01:10  |
+------------------+---------------+----------------------+
现在我想按类别检索图像。这意味着一次从每个类别中获取图像,并按上传日期降序排列

请不要建议:
按类别顺序从图像组中选择*按上载日期描述
因为我使用分页来显示图像,每个页面都包含来自不同类别的不同图像

for($i=0;$i<count($distinctcat);$i++)
    {
        $qry = "SELECT * FROM images WHERE category = '".$distinctcat."'";
        // fetch that data then save it in to array
    }
我解决了这个问题,但还有其他解决方法。。。 以下是我的解决方案:

=>找到所有不同的类别并将其保存在数组中

=>迭代for循环并从该特定类别获取图像

for($i=0;$i<count($distinctcat);$i++)
    {
        $qry = "SELECT * FROM images WHERE category = '".$distinctcat."'";
        // fetch that data then save it in to array
    }
for($i=0;$i按日期排列图像

=>根据分页限制和页码,使用array_slice函数剪切数组

有谁能给我建议一个更好的解决方案或者一个能处理所有这些事情的查询


提前感谢。

以下查询将获得每个类别的所有最新图像

SELECT  a.*
FROM    images a
        INNER JOIN
        (
            SELECT  category, MAX(uploaddate) max_date
            FROM    images
            GROUP   BY category
        ) b ON a.category = b.category AND
                a.uploadDate = b.max_date
但是,如果您只想要特定的
类别
,您可以使用
按顺序
限制

SELECT  a.*
FROM    images a
WHERE   category = 'categoryName'
ORDER   BY uploadDate DESC
LIMIT   1

在SO中,这个问题一天会被问好几次。我今天听说了SQL Fiddle。它太棒了。