Php 如何基于mysql中的其他表行更改表中的行?

Php 如何基于mysql中的其他表行更改表中的行?,php,mysql,row,Php,Mysql,Row,我有一个表,它有3列:id、a_id和b_id 假设行如下所示: 1, a1, b1 2, a1, b2 3, a1, b3 4, a2, b4 5, a2, b5 6, a2, b6 我想把它转换成 1, a1, b1 2, a1, b1 3, a1, b1 4, a2, b4 5, a2, b4 6, a2, b4 所以我想让所有与a_id对应的b_id相同,并且等于第一个找到的b_id。我该怎么做?为了简单起见,我从表中删除了其他列。所以请忽略这里的行重复 假设b_id是每个id组中数

我有一个表,它有3列:id、a_id和b_id

假设行如下所示:

1, a1, b1
2, a1, b2
3, a1, b3
4, a2, b4
5, a2, b5
6, a2, b6
我想把它转换成

1, a1, b1
2, a1, b1
3, a1, b1
4, a2, b4
5, a2, b4
6, a2, b4

所以我想让所有与a_id对应的b_id相同,并且等于第一个找到的b_id。我该怎么做?为了简单起见,我从表中删除了其他列。所以请忽略这里的行重复

假设
b_id
是每个
id
组中数学上最小的:

$result = mysql_query("SELECT a_id, b_id
FROM table
GROUP BY a_id
ORDER BY id ASC");

while ($row = mysql_fetch($result))
{
    mysql_query("UPDATE table SET b_id=$row['b_id'] WHERE a_id=$row['a_id']");
}
UPDATE
  tbl
SET
  b_id = (
    SELECT MIN(b_id) 
      FROM tbl AS i
     WHERE i.id = tbl.id AND i.a_id = tbl.a_id
  )

如果a_id和b_id总是相互对应,那么为什么需要它们呢?如果完全删除b_id列而只使用a_id,不是更有意义吗?出于各种原因,我必须保留这两个id。