我有一个名为items的表。在此表中有许多列。其中一列称为“源”。我想做的是从表中选择记录。我想选择最新的5条记录,条件是“源”列都是不同的。
我尝试了以下内容:
SELECT DISTINCT SOURCE from items order by time DESC LIMIT 5
但我需要整个记录而不仅仅是来源,当我尝试包含更多列时,它不起作用。
我试过了:
SELECT * FROM items WHERE item_section='sp_500' GROUP BY source ORDER BY time DESC LIMIT 3
但它没有给我最新的记录
答案 0 :(得分:2)
棘手。
试试这个。
SELECT items.*
FROM items
INNER JOIN
(SELECT source, max(time) maxtime
FROM bbc
GROUP BY source
ORDER BY max(time) DESC
LIMIT 5
) s
ON items.source = s.source and items.time = maxtime
答案 1 :(得分:0)
这样做:
SELECT * FROM items WHERE source IN (
SELECT DISTINCT source FROM items ORDER BY time DESC LIMIT 5
)
答案 2 :(得分:0)
试试这个
SELECT * FROM items as itm,(SELECT pk,DISTINCT source as src FROM items ORDER BY time DESC LIMIT 5) as temp WHERE itm.pk = temp.pk
其中pk
是您的主键
答案 3 :(得分:0)
为了保证选择最新的五条记录,我建议您添加一个名为"created"
的新列,并在其中插入记录创建的time()
。
示例:
Insert into items values(ID,SOURCE, CREATED )
选择最新的五条记录时,您可以这样做:
SELECT source, Max(created) FROM items GROUP By created LIMIT 5