mysql - 选择组中的附加列值

标签 mysql sql

请看下面的mysql表数据。我想做的是每个日期都有 MIN(price),但也选择匹配的 some_id。

SELECT date, MIN(price), some_id
FROM table
GROUP BY date

这是行不通的,因为 mysql 5.7 默认引入了 full group by 模式。

有什么想法吗?请注意,这是一个包含数百万行的庞大表格。

date        price   some_id
2016-04-09  10.66   3535475
2016-04-09  11.53   2429075
2016-04-09  11.53   2119575
2016-04-09  12.53   1431700
2016-04-09  12.55   2119375
2016-04-10  8.58    885050
2016-04-10  13.20   3535475
2016-04-10  14.27   2429075
2016-04-10  14.27   2119575
2016-04-10  14.70   13591
2016-04-11  11.98   885050
2016-04-11  12.44   2119375
2016-04-11  13.00   3535475
2016-04-11  13.79   2119575
2016-04-11  14.27   2429075
2016-04-11  14.91   13409
2016-04-11  15.38   2152375
2016-04-11  15.64   1431700

最佳答案

尝试将您的查询用作派生表,然后JOIN 返回原始表以获取归档 some_id:

SELECT t1.date, t1.price, t1.some_id
FROM table t1
JOIN (
    SELECT date, MIN(price) as min_price
    FROM table 
    GROUP BY date
) t2 ON t1.date = t2.date AND t1.price = t2.min_price

关于mysql - 选择组中的附加列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39618182/

相关文章:

MySQL选择具有日期的行

mysql - 添加两列的简单 SQL 测试

sql - 找不到适用于 H2 和 Postgres 的通用 SQL

javascript - 从动态表单插入多个值

MySql 子查询从另一个表中提取数据

c# - 如何在 MySQL 数据库中使用系统时间查询搜索时间

mysql - Ruby on Rails 和远程 MySQL

sql - SELECT DISTINCT 的子集

sql - 使用 IN 列表进行外部连接?

sql - 为每个左连接行匹配重复所有基表行