MySQL - 为每个'组'插入增量数字

时间:2011-05-26 16:59:46

标签: php mysql

将此结果设置如下;我试图将红色数字插入post_position - 从1开始,与每个topic_id一样多的行。

可以使用phpMyAdmin中的简单查询来完成,还是需要使用PHP? (如果我需要PHP,你可以帮助一个简短的片段吗?)

screenshot

2 个答案:

答案 0 :(得分:1)

我觉得这是一张设计最差的表:(添加

id
每个值

;

make php:

$result = mysql_query("SELECT * FROM <table> ORDER BY topic_id, id");
$count = 1;
while($r = mysql_fetch_assc($result){
     if(!isset($topic_id) || $topic_id != $r['topic_id]){
         $topic_id = $r['topic_id];
         $count = 1;
     }
     mysql_query("UPDATE <table> SET post_position = {$count} WHERE `id` = {$r['id'}");
     $count++;
} 

答案 1 :(得分:1)

你可以在SQL层使用一些服务器端变量和查询本身中的一堆丑陋逻辑来完成它。但是用PHP做它会容易得多。

select @last_group := null; @row_num := 0;

select if(@last_group <> grouped_field_in_your_table, @row_num := @row_num + 1, @row_num := 1), 
   other,fields,here
   @last_group := group_field_in_your_table
from ....

丑陋,但有点工作。