2016-05-14 91 views
0

在这种情况下,我需要您的帮助。我有这个记录表: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等等。

这样做的最好方法是什么?提前致谢!

+0

更新MY_TABLE组计数器=计数器+1,其中记录= '值1' – Strawberry

+0

@Strawberry感谢您的评论。我知道如何递增价值,但我不知道我应该如何处理“number_repeats”==“counter”。例如这样的事情: 'SELECT记录FROM记录WHERE number_repeats!= counter ORDER BY sort_order LIMIT 1' – ManOfHonor

+0

我想我只是不明白问题 – Strawberry

回答

0

未经测试:

Update my_table set counter = counter +1 where counter < repeats order by sort_order limit 1; 
相关问题