0

私は3つのテーブルを持っています- News, Content and Edits

各テーブルのすべての行にはuser_idフィールドが含まれています。

私がやりたいのは、これら3つのテーブルの上位の貢献者のリストを作成することです。

したがってuser_id、各テーブルにそれぞれ異なるものが表示される回数を数え、最大数から最小数の順に並べる必要があります。

4

3 に答える 3

3

このような:

SELECT 
    user_id,
    COUNT(*) AS all_actions 
FROM (
    SELECT user_id FROM News
    UNION ALL
    SELECT user_id FROM Content
    UNION ALL
    SELECT user_id FROM Edits
) tmp_table
GROUP BY user_id
ORDER BY all_actions DESC
于 2012-12-14T20:54:50.453 に答える
0

これでうまくいくはずです。

SELECT all_user_ids.user_id as `user_id`, COUNT(all_user_ids.user_id) as `count`
FROM
(SELECT user_id FROM news
UNION ALL
SELECT user_id FROM content
UNION ALL
SELECT user_id FROM edits) AS all_user_ids
GROUP BY `user_id`
ORDER BY `count` DESC
于 2012-12-14T20:56:00.837 に答える
0

これはテーブルごとのインスタンスになります

SELECT DISTINCT(COUNT(user_id)) as num FROM news GROUP BY user_id ORDER BY num DESC LIMIT 0,3
于 2012-12-14T20:57:03.713 に答える