1

私はmysqlデータベースを使用しています。
私は2つのテーブルを持っていますuser_songsuser_like

のフィールドuser_song:

id(auto incement)
song_id
user_id
song_name
song_file

のフィールドuser_like:

id(auto incement)
song_id
uder_id
like

私はuser_like 、ユーザーが曲を好きな場所にデータを保存しているので、各行には次のようなデータが含まれています。

1 1 1 1

like は、嫌いな場合は 0 または 1.0、好きな場合は 1 を保存することに注意してください。

idここで、 から最も好きな曲のトップ 20 を見つけ、からuser_likeすべてのデータを取得する必要があります。user_songsuser_songs

これを行う方法?
このクエリを解決するために貴重な時間を割いていただき、ありがとうございます。

4

1 に答える 1

0
SELECT  a.*, b.totalLike
FROM    user_song a
        INNER JOIN
        (
            SELECT  song_id, COUNT(*) totalLike
            FROM    user_like
            GROUP   song_id
        ) b ON a.song_id = b.song_ID
ORDER BY totalLike DESC
LIMIT 20

注意: 上記のクエリは、結果のタイアップ値を処理しませんtotaluserLike。結果リストには 20 件のレコードのみが表示されます。

于 2013-01-16T07:43:12.073 に答える