Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 使用mysql获取最早的datetime值_Php_Mysql - Fatal编程技术网

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如果你接受我的回答并放弃投票,如果我的回答对你有帮助,我将不胜感激。。