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