我需要用户获取最后插入的产品。这就是我想出来的
$query = 'SELECT id
FROM products
WHERE user_id = ?
ORDER BY id DESC
LIMIT 1';
应工作,因为id是自动增量。但对我来说,它感觉很糟糕。有更好的方法吗?
我不能使用mysql_last_insert_id()
或类似的东西,因为我需要特定用户的最后一个产品。
答案 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