对于以下数据:
mysql> select * from policy_redeem_window;
+----+---------+-----------+----------+-------+---------------------+---------+---------------------+
| id | user_id | policy_id | delta_id | value | start_date | state | created |
+----+---------+-----------+----------+-------+---------------------+---------+---------------------+
| 1 | 0 | policy1 | delta1 | 1.00 | 2019-12-11 14:22:21 | PENDING | 2019-12-11 14:22:21 |
| 2 | 0 | policy1 | delta2 | 1.00 | 2019-12-12 14:22:33 | PENDING | 2019-12-11 14:22:33 |
| 3 | 0 | policy2 | delta3 | 1.00 | 2019-12-11 14:22:45 | PENDING | 2019-12-11 14:22:45 |
| 4 | 0 | policy2 | delta4 | 1.00 | 2019-12-12 14:23:08 | actIVE | 2019-12-11 14:23:08 |
| 6 | 0 | policy2 | delta5 | 1.00 | 2019-12-11 14:23:37 | actIVE | 2019-12-11 14:23:37 |
+----+---------+-----------+----------+-------+---------------------+---------+---------------------+
5 rows in set (0.00 sec)
我正在尝试每个policy_id
仅获得一行,其中每一行都是最早的start_date
的行:
我尝试了以下查询:
select *
from policy_redeem_window
where user_id = 0
and state in ('actIVE','PENDING')
group by policy_id
order by start_date desc;
但这给了我以下错误:
SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列'admiral.policy_redeem_window.id',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by
不兼容
我在哪里错了?