我有一个数据库 my_db ,其中有两个表 t1 和 t2 。
t1 有两列 ID 和 count 。 ID 是一些整数的列表,例如1,3,4,6,7,8,9和 count 默认为全0。
t2 还有两列, ID2 ,其中有一个整数列表,与 t1 <中 ID 的整数列表相同/ strong>即可。但是,它们可能重复或可能不存在。第二列包含一些值,这对这个问题并不重要。澄清: ID2 可以是1,1,3,4,3,1,9,8,7,7,7。
现在,我需要做的是 t1 中的每个 ID 我需要填写 count ,即出现次数 t2 中的 ID 为 ID2 。
运行循环遍历 ID2 中的所有值,并且每次在相应的 count 中递增1应该这样做。但是我无法编写代码,不熟悉php和sql。我可以在一张桌子上工作。如何跨多个工作?
答案 0 :(得分:3)
也许你可以尝试MySQL更新加入?
UPDATE t1
LEFT JOIN (SELECT id2,
Count(1) AS num
FROM t2
GROUP BY id2) ref
ON t1.id = ref.id2
SET t1.count = ref.num
如果我错了,请纠正我。
答案 1 :(得分:2)
select t1.id,count(t2.id) as total_record_in_t2
from t1
left join t2 on (t1.id=t2.id)
group by t1.id;
答案 2 :(得分:2)
我理解你的问题是,你需要通过查看表t1中的ID来计算表t2中的所有ID,然后你想在表t1的count列中插入所有ID的计数。
<?php
$query = mysql_query("SELECT * from t1");
while($record = mysql_fetch_array($query )) {
$query2 = mysql_query("SELECT COUNT(*) from t2 WHERE id='".$record['ID']."'");
$fetch = mysql_fetch_array($query2);
$count = $fetch['COUNT(*)'];
$query3 = mysql_query("UPDATE t1 SET count='".$count."' WHERE id='".$record['ID']."'");
}
?>
如果您收到任何错误。你可以告诉我。
希望它适合你。
由于
答案 3 :(得分:2)
另一个答案(带子查询)
update d1
set d1.count_d1 = (select count(d2.id)
from d2
where d2.id = d1.id group by d1.id)
答案 4 :(得分:1)
这是sql部分。 首先得到t2中ID2的出现次数:
select id2, count(*) from ts group by id2;
然后遍历结果并更新t1:
update t1 set count = $value where id1 = $id2