mysqlの更新でcount()を実行しますか?

count database database-design mysql
mysqlの更新でcount()を実行しますか?

次のようなクエリを実行できますか? 可能であれば、ストアドプロシージャの代わりにこれを実行したいと思います。

たとえば、2つのテーブル

UPDATE items
SET score='a', count=(SELECT COUNT(votes.id) AS C WHERE votes.uri = items.uri)
WHERE items.id = 'b'

それとも何か… 基本的にテーブルでカウントを行い、その値を使用して別のテーブルを更新しますか?

この質問が理にかなっているかどうかさえ知りません。 必要であれば、私をバカと呼んでください。

*編集*すみません、この質問は意味をなさないかもしれません。 テーブル “B”をカウントし、その値を使用して同じクエリ内のテーブル “A”を更新します。

  0  0


ベストアンサー

確かに、あなたは基本的に正しい構文を持っています:

UPDATE items
SET score= 'a', count = (SELECT COUNT(votes.id)
    FROM votes WHERE votes.uri = items.uri)
WHERE items.id = 'b'

これは相関サブクエリと呼ばれます。 サブクエリで外部クエリのテーブルを参照するため、相関関係があります。

3


What you’re looking for is

[mysql_affected_rows()]、クエリの直後に呼び出して、更新されたレコード数を確認できます。

あなたは実際に非常に近いです! これはどう:

UPDATE items SET score='a', count = (SELECT COUNT(votes.id) FROM votes WHERE votes.uri = items.uri) WHERE items.id = 'b'

編集:Rafeは最初にソリューションを投稿しました。

1


タイトルとURLをコピーしました