我有一张带笔记的桌子。以下是我的数据库的一小部分数据。
Id register_no name classification possibility
1 112 Ben Red 10%
2 112 Ben Red 10%
3 113 Ben Red 20%
4 112 Ben Amber 30%
5 112 Ben Amber 10%
6 113 Ben Amber 30%
7 113 Ben Red 10%
8 112 Ben Red 50%
对不起,我以错误的方式解释了这个问题。
实际上我想要的是为每个register_no检索最后插入的记录,因为sales_log表保存了列表进度...
举个例子 Register_no 112在数据库中有12条记录,最后一条记录是90%(它从10,40,60%进展,因此所有这些记录都在数据库中)
我想要的是得到90%的register_no 112等等...它不仅仅是一条记录......大约有500个register_no,我想得到每个register_no的最后一个条目
希望这次有意义
答案 0 :(得分:3)
您应该尝试此查询以获取具有最大id
值的寄存器号的注释:
SELECT n1.*
FROM notes n1
LEFT JOIN notes n2
ON (n1.register_no = n2.register_no AND n1.id < n2.id)
WHERE n2.id IS NULL;
答案 1 :(得分:2)
尝试
SELECT * FROM (`sales_log`) WHERE 1 ORDER BY `id` DESC LIMIT 2
告诉mysql匹配'name = ben'永远不会找到mandy的id 7
答案 2 :(得分:2)
使用
SELECT * FROM sales_log WHERE `classification` = 'red' ORDER BY `Id` DESC LIMIT 2;
答案 3 :(得分:2)
这应该有效:
SELECT data.*
FROM sales_log AS data
JOIN
(
SELECT MAX(Id) as Id
FROM sales_log
GROUP BY register_no
) AS newest
ON data.Id = newest.Id
结果:
'8', '112', 'Ben', 'Red', '50'
'7', '113', 'Ben', 'Red', '10'
编辑:我只看了@ Omesh的链接,显然他发布的解决方案要快得多。它产生与我的查询完全相同的输出。