MySQL根据另一列中的数字选择值X次
问题描述:
在这种情况下,我需要您的帮助。我有这个记录表:MySQL根据另一列中的数字选择值X次
+-----------+--------+----------------+---------+------------+
| record_id | record | number_repeats | counter | sort_order |
+-----------+--------+----------------+---------+------------+
| 1 | Value3 | 2 | 0 | 3 |
| 2 | Value2 | 1 | 0 | 2 |
| 3 | Value1 | 3 | 0 | 1 |
| 4 | Value4 | 1 | 0 | 4 |
+-----------+--------+----------------+---------+------------+
我有这个简单的查询:
SELECT * FROM records ORDER BY sort_order
排序我需要一个表经过这么选择值1和列更新值计数器后将有这样的看法:
+-----------+--------+----------------+---------+------------+
| record_id | record | number_repeats | counter | sort_order |
+-----------+--------+----------------+---------+------------+
| 3 | Value1 | 3 | 1 | 1 |
| 2 | Value2 | 1 | 0 | 2 |
| 1 | Value3 | 2 | 0 | 3 |
| 4 | Value4 | 1 | 0 | 4 |
+-----------+--------+----------------+---------+------------+
Afte r列中的下一个查询号计数器将为等。当列号为时,计数器等于列号number_repeats我需要选择值2等等。
这样做的最好方法是什么?提前致谢!
答
未经测试:
Update my_table set counter = counter +1 where counter < repeats order by sort_order limit 1;
更新MY_TABLE组计数器=计数器+1,其中记录= '值1' – Strawberry
@Strawberry感谢您的评论。我知道如何递增价值,但我不知道我应该如何处理“number_repeats”==“counter”。例如这样的事情: 'SELECT记录FROM记录WHERE number_repeats!= counter ORDER BY sort_order LIMIT 1' – ManOfHonor
我想我只是不明白问题 – Strawberry