【发布时间】:2018-01-24 06:06:19
【问题描述】:
这是我的数据库。
id - date_time - barcode_no - result
1 - '2017-08-01 01:00:00' - 'A' - '1'
2 - '2017-08-01 02:00:00' - 'A' - '2'
31 - '2017-08-01 03:00:00' - 'A' - '3'
4 - '2017-08-01 04:00:00' - 'B' - '4'
5 - '2017-08-01 05:00:00' - 'B' - '5'
61 - '2017-08-01 06:00:00' - 'B' - '6'
7 - '2017-08-01 07:00:00' - 'C' - '7'
8 - '2017-08-01 08:00:00' - 'C' - '8'
9 - '2017-08-01 09:00:00' - 'C' - '9'
100- '2017-08-01 10:00:00' - 'C' - '10'
我在 mySQL 上有这个查询
SELECT barcode_no,MAX(date_time),result
FROM test_data_main
GROUP BY barcode_no
但它没有给我正确的结果。我也使用了 any_value(result) 但我得到了同样的错误结果。
这是我在 SQL Fiddle 上的示例数据库和代码的链接。 SAMPLE CODE
我的要求是获取最新barcode_no所在的行。
id - date_time - barcode_no - result
31 - '2017-08-01 03:00:00' - 'A' - '3'
61 - '2017-08-01 06:00:00' - 'B' - '6'
100- '2017-08-01 10:00:00' - 'C' - '10'
但我的错误结果是
id - date_time - barcode_no - result
31 - '2017-08-01 03:00:00' - 'A' - '1'
61 - '2017-08-01 06:00:00' - 'B' - '4'
100- '2017-08-01 10:00:00' - 'C' - '7'
我不确定我的查询有什么问题。请指教。
提前致谢。
【问题讨论】:
-
"我的要求是获取最新barcode_no所在的行。" -- 使用
GROUP BY无法从表中获取行。GROUP BY使用表中的数据计算新行。在similar question 上查看this answer。 -
感谢 axiac 和 Sagar Gangwal。似乎是类似的axiac。可惜搜索时没有显示。
标签: mysql greatest-n-per-group