MySQL 查询 - 按日期和 ID 过滤

标签 mysql filter

我有一张 table ,我想得到:

ID  Name    Stock   Code    Date
<---------------------------------------------->
123 GAME_0011     1     WK1 2018-11-20 16:12:16
120 GAME_0088     212   WK1 2018-11-20 19:32:13
109 GAME_0088     21    WK1 2018-11-20 19:32:13
101 GAME_0088     20    WK1 2018-11-20 14:00:41
105 GAME_0011     1     WK1 2018-11-20 14:00:41
102 GAME_0088     2     WK1 2018-11-20 14:00:41

结果将按名称、代码和每个 date 字段的 MAX 计算,如果日期相同,也按 id 过滤:

ID  Name    Stock   Code    Date
<---------------------------------------------->
120 GAME_0088     212   WK1 2018-11-20 19:32:13
123 GAME_0011     1     WK1 2018-11-20 16:12:16

我的查询是:

SELECT *
FROM games
WHERE name IN ('GAME_0088', 'GAME_0011')
AND code IN ('WK1')
AND date IN (SELECT max(date) FROM stocks GROUP BY name)
ORDER BY id desc 

但返回:

ID  Name    Stock   Code    Date
<---------------------------------------------->
123 GAME_0011   1   WK1 2018-11-20 16:12:16
109 GAME_0088   21  WK1 2018-11-20 19:32:13

怎么了?我如何也可以按 MAX ID 进行过滤?

最佳答案

在 Derived 表中,您可以获得特定组 namecodeID 的最大值。使用此信息返回 games 表以获取与最大日期对应的行。

SELECT g.*
FROM games AS g 
JOIN 
( SELECT name, code, MAX(ID) AS max_id
  FROM games 
  GROUP BY name, code
) AS dt ON dt.name = g.name AND 
           dt.code = g.code AND 
           dt.max_id = g.ID 
WHERE g.name IN ('ACK1134', 'ACK1159')
  AND g.code IN ('CD23')
ORDER BY g.ID desc 

关于MySQL 查询 - 按日期和 ID 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53411747/

相关文章:

mysql - 普通列后跟聚合函数但不在分组依据中

MySQL 不使用 xampp 中的端口?

Javascript:过滤数组中的元素部分

java - 我的应用程序的 Recycler View 中的 Android Studio SearchView 过滤器问题

mysql - 查询 MySQL 以获取多次出现的数据,但前提是另一个字段不同

php - 仅在第一次单击时添加动态行

javascript - 为什么我的过滤功能不起作用? (JavaScript)。

filter - 使用Google Apps脚本启用范围内的数据过滤器

r - 如何滚动过滤?

php echo json_encode from DB entries -> 获取奇怪的格式。如何获得正确的 JSON