Php 如何基于mysql中的其他表行更改表中的行?
我有一个表,它有3列:id、a_id和b_id 假设行如下所示: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组中数
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。