我有一个存储动作的表。有两种特殊类型的动作,例如“起床”和“上床睡觉”。
“Wake up”和“Go to bed”之间的所有操作都应返回一个值为“AWAKE”的额外字段。如果动作发生在“Wake up”之前或“Go to bed”之后,它应该返回一个值为“ASLEEP”的额外字段。(这些只是示例值,请尽量不要太认真。)
+--------+-----------+
| ac_id | ac_name |
+--------+-----------+
| 1 | Talk |
+--------+-----------+
| 2 | Wake Up |
+--------+-----------+
| 3 | Walk |
+--------+-----------+
| 4 | Go to bed |
+--------+-----------+
| 5 | Scream |
+--------+-----------+
使用这种结构,如果我用SELECT ac_name, ac_status FROM actions_table WHERE ac_name = 'Walk'
它进行查询应该返回:
ac_name: Walk
ac_status: AWAKE
...因为“Walk”介于“Wake Up”和“Go to bed”之间。
我的问题是,如何在同一个查询中并且不进行任何额外查询,我可以根据行的“位置”返回该值?
可能我对 MySQL 的要求太高了,但如果我能做到,我想知道怎么做。 如果这在单个查询中是不可能的,则也接受 STORE PROCEDURES 或 FUNCTIONS。
编辑 表中可以有不止一个“Wake Up”和不止一个“Go to bed”。