次の表を検討してください。
users messages
----------------- -----------------------
user_id messages msg_id user_id content
----------------- -----------------------
1 0 1 1 foo
2 0 2 1 bar
3 0 3 1 foobar
4 3 baz
5 3 bar
ユーザーごとのメッセージ数をカウントし、次のように結果をusers.messagesに挿入します。
users
-----------------
user_id messages
-----------------
1 3
2 0
3 2
PHPを使用して、この操作を実行できます。疑似:
foreach ($user_id in users) {
$count = select count(msg_id) from messages where user_id = $user_id
update users set messages = $count
}
しかし、これは、MySQLで直接実行される1つのクエリと比較すると、おそらく非常に非効率的です。
UPDATE users SET messages = (
SELECT COUNT(msg_id) FROM messages
)
しかし、これは適切なクエリではないと確信しています。したがって、どんな助けもいただければ幸いです:-)