0

送信者、URL、コンテンツなどを含むメッセージテーブルにもあるお気に入り列のコンマ区切りリストとして、お気に入り (その投稿をお気に入りとしてマークしたユーザーの ID) を使用することにしました。

しかし、次のようなクエリでそれらの行をカウントしようとすると:

select count(id) 
from messages 
where favs like '%userid%' 

もちろん、すべての ID が別の ID の一部である可能性があるため、間違った結果が返されます。

たとえば、id=1 のクエリを実行すると、ユーザー ID 11 によってお気に入りに登録されている他のコンテンツのカウンターも増加します...

このシステムを機能させるためのアイデアや解決策を教えてください。

4

4 に答える 4

5

いくつかの or を使用すると、醜い解決策が得られます。

select count(id) from messages where favs like 'userid,%' or favs like '%,userid,%' or favs like '%,userid'

より洗練された解決策がある可能性がありますが、少なくとも探している結果が返されると思います。

于 2009-04-30T01:17:11.043 に答える
2

これを使用する必要があります:

SELECT count(id) FROM messages WHERE FIND_IN_SET('userid',favs) > 0
于 2009-06-02T03:27:27.590 に答える
1

値を取得し、PHP で展開してから、配列をカウントする必要がある場合があります。

MySQL でそれを行う方法はありますが、私が見た限りでは面倒です。

于 2009-04-30T01:15:52.543 に答える