【发布时间】:2021-12-28 19:59:51
【问题描述】:
我有这些表:
blocks TABLE blocks_fields TABLE
id|user_id|name id|block_id|options_id|status
1| 1|block1 1| 1| 1| 1
2| 1|block2 2| 2| 2| 0
3| 1|block3 3| 3| 3| 2
4| 1|block4 4| 4| 1| 1
blocks_events TABLE blocks_options TABLE
id|field_id|event|code id|value1|value2
1| 1| ev1 | 1234 1| 10| A
2| 2| ev1 | 5678 2| 20| B
3| 1| ev2 | 1234 3| 30| C
4| 3| ev1 | 9012 4| 10| A
我正在尝试为每个代码选择最后一个事件(最后插入的行),只知道 user_id
输出应该是这样的:
blocks_events.event|blocks_events.code|blocks_options.value1|blocks_options.value2
ev2| 1234| 10| A
ev1| 5678| 20| B
ev1| 9012| 30| C
我知道如何通过多项选择获得此输出,但我想知道是否可以只选择一次。
【问题讨论】:
-
什么决定了“最后的事件”是什么?
-
最后插入的行
-
您说“只知道 user_id”,但似乎显示所有用户 id 的预期结果
-
你是对的,我写错了ID。我更新了表格以反映正确的值。
-
你的意思是最高的block_events.id吗?还是有插入的时间戳? (对应该是不透明的 ID 进行排序并不理想;这意味着您将永远无法插入历史数据,或者无法轻松地从应该插入的行没有插入的问题中恢复)
标签: mysql group-by max inner-join