将此结果设置如下;我试图将红色数字插入post_position - 从1开始,与每个topic_id
一样多的行。
可以使用phpMyAdmin中的简单查询来完成,还是需要使用PHP? (如果我需要PHP,你可以帮助一个简短的片段吗?)
答案 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 ....
丑陋,但有点工作。