如何根据mysql中的其他表行更改表中的行?

时间:2010-04-05 22:15:23

标签: 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相同,并且等于先找到的那个。我怎样才能做到这一点?为简单起见,我从表中删除了其他列。所以请在这里忽略行重复。

2 个答案:

答案 0 :(得分:1)

假设b_id在每个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
  )

答案 1 :(得分:0)

$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']");
}