在MySQL中有没有一种不太常见的方法呢?

时间:2009-11-27 04:16:02

标签: php mysql

我需要用户获取最后插入的产品。这就是我想出来的

   $query = 'SELECT id
                 FROM products
                 WHERE user_id = ?
                ORDER BY id DESC
                       LIMIT 1';

工作,因为id是自动增量。但对我来说,它感觉很糟糕。有更好的方法吗?

我不能使用mysql_last_insert_id()或类似的东西,因为我需要特定用户的最后一个产品。

4 个答案:

答案 0 :(得分:5)

为此,我会在您的表中添加DATETIME列。从订购的角度来看,我个人觉得不能依赖AUTO_INCREMENT的行为。此外,它的目的是“为新行生成唯一的标识”。除此之外,你不应该真正关心价值。

答案 1 :(得分:4)

使用:

  SELECT MAX(t.id) AS id
    FROM PRODUCTS t
   WHERE t.user_id = ?

MAX是一个聚合函数,返回指定列的最大值。因为查询只返回一列 - 正在使用聚合函数的列 - 所以不需要指定GROUP BY子句。但使用时没有坏处:

  SELECT MAX(t.id) AS id
    FROM PRODUCTS t
   WHERE t.user_id = ?
GROUP BY t.user_id

答案 2 :(得分:1)

你可以使用

SELECT MAX(id) FROM ...

不确定会有多好,所以:)

答案 3 :(得分:0)

我同意Datetime Column选项。 例如您有名为LastAddedDate Datetime的列 那么你可以像

那样进行查询
  

选择顶部(1)Products.Id from   User_Id = @ UserId订单的产品   by LastAddedDate,Id Desc

或者在id的情况下你也可以写查询

  

选择顶部(1)Products.Id from   User_Id = @ UserId订单的产品   通过Id Desc