我的简要说明:
我有两个表,即类别和产品。
表:类别
id category
1 cat1
2 cat2
3 cat3
4 cat4
表:产品
id productName category
1 test1 1
2 test2 2
3 test3 3
4 test4 4
5 test5 2
6 test6 2
我的疑问是:
我需要在每个类别中最后插入的产品。
如何解决这个问题。
提前致谢
答案 0 :(得分:0)
这是此处询问的最常见SQL问题之一的变体,即每组最大值。见例如。 this question用于各种方法。
我经常使用的是null-self-left-join,用于选择上面没有值的行:
SELECT p0.*
FROM product AS p0
LEFT JOIN product AS p1 ON p1.category=p0.category AND p1.id>p0.id
WHERE p1.id IS NULL
这假设id
按顺序分配,因此最高是最新的。通常,依靠身份作为排序机制并不是一个好主意;您通常会为每行添加added
个时间戳,而不是工作。
(注意这一点,当两行具有相同的顺序列时,许多其他每组最大函数可以返回多行。如果这是一个问题,可以通过使用UNIQUE
排序列来避免;作为主键id
已经是这样了。即使有两个最大值使用SQL,你也可以得到一行:2003的有用但相当丑陋的ROW_NUMBER() OVER
窗口函数,但MySQL不支持这种情况。)
答案 1 :(得分:0)
您可以在添加新产品时添加create_time
时间戳,并按类别检索最新类型:
select max(create_time),category from product group by category