Php 使用mysql获取最早的datetime值
我有这张桌子Php 使用mysql获取最早的datetime值,php,mysql,Php,Mysql,我有这张桌子 CREATE TABLE `products_to_categories` ( `products_id` int(11) NOT NULL, `categories_id` int(11) NOT NULL, `date_added` datetime NOT NULL, PRIMARY KEY (`products_id`,`categories_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 产品id 2085有三个条目
CREATE TABLE `products_to_categories` (
`products_id` int(11) NOT NULL,
`categories_id` int(11) NOT NULL,
`date_added` datetime NOT NULL,
PRIMARY KEY (`products_id`,`categories_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
产品id 2085有三个条目,因为它分为三个类别
products_id categories_id date_added
2085 204 2013-03-01
2085 143 2013-03-13
2085 86 2013-03-25
实际上,我有这个查询来按添加的日期排序
SELECT categories_id,
products_id
FROM products_to_categories
WHERE categories_id != 0
ORDER BY date_added
如何通过查询获取最早的值(在本例中为2013-03-01)?使用聚合函数
MIN
:
SELECT MIN(date_added) AS OldestDate
FROM products_to_categories
WHERE products_id = 2085;
如果要查找每个产品的最早日期,请添加一个
分组依据
:
SELECT products_id, MIN(date_added) AS OldestDate
FROM products_to_categories
GROUP BY products_id;
MIN
:
SELECT MIN(date_added) AS OldestDate
FROM products_to_categories
WHERE products_id = 2085;
如果要查找每个产品的最早日期,请添加一个
分组依据
:
SELECT products_id, MIN(date_added) AS OldestDate
FROM products_to_categories
GROUP BY products_id;
- 以下是获取整行的方法:
select ptc.*
from products_to_categories ptc
where products_id = 2085
order by date_added
limit 1;
这将通过产品到类别(产品标识、添加日期)的索引进行优化
编辑:
每个产品的最早值:
select products_id, min(date_added)
from products_to_categories ptc
group by products_id;
以下是获取整行的方法:
select ptc.*
from products_to_categories ptc
where products_id = 2085
order by date_added
limit 1;
这将通过产品到类别(产品标识、添加日期)的索引进行优化
编辑:
每个产品的最早值:
select products_id, min(date_added)
from products_to_categories ptc
group by products_id;
这样,您将拥有每种产品最早的生产线
SELECT products_id, categories_id, MIN(date_added)
FROM products_to_categories
WHERE categories_id != 0
GROUP BY products_id
这样,您将拥有每种产品最早的生产线
SELECT products_id, categories_id, MIN(date_added)
FROM products_to_categories
WHERE categories_id != 0
GROUP BY products_id
演示:
演示:如果输入是基于日期的,则可以使用Min
运算符
SELECT products_id,MIN(date_added) AS OldDate
FROM products_to_categories group by products_id
上述查询将为所有产品选择日期的最小值。\u id..如果您的条目是基于日期的,则可以使用min
运算符
SELECT products_id,MIN(date_added) AS OldDate
FROM products_to_categories group by products_id
上面的查询将选择所有产品的最小日期。\u id..,但在我的原始查询中,我没有指向产品的\u id。pid=285只是一个example@RonnyLinsener . . . 我不明白你在找什么。如果想要最旧的记录,只需删除where
语句。你想要每个产品的最早价值吗?你是对的。这正是我想要的,每种产品最古老的价值。但在我最初的查询中,我没有指出产品的id。pid=285只是一个example@RonnyLinsener . . . 我不明白你在找什么。如果想要最旧的记录,只需删除where
语句。你想要每个产品的最早价值吗?你是对的。这正是我想要的,每种产品最古老的价值。是否要获取所有产品,但按产品仅获取一行,只保留最旧的行?还是只想获取表中最早的一行,其中categories_id!=0?是否要获取所有产品,但按产品仅获取一行,仅保留最早的行?还是只想获取表中最早的一行,其中categories_id!=0?@Ronny linsener。朋友,你试过我的答案了吗。我想我的答案会满足你的需要。该死,它真的有用。你是最棒的winner@RonnyLinsener如果你接受我的答案并放弃投票,如果我的答案对你有帮助,我将不胜感激。@Ronny linsener。朋友,你试过我的答案了吗。我想我的答案会满足你的需要。该死,它真的有用。你是最棒的winner@RonnyLinsener如果你接受我的回答并放弃投票,如果我的回答对你有帮助,我将不胜感激。。