Mysql 如何按其他表值排序sql查询

Mysql 如何按其他表值排序sql查询,mysql,sql,Mysql,Sql,我知道stackoverflow是这个问题的答案,但我有一点不同的情况。 我在第二个表中有很多单元格,但SQL查询只获取第一个单元格。好的,不是所有的查询,只有WHERE标记 例如: 1表: user_id = 1 user_id = 2 user_id = 1 | year = 2015 | rating = 55 user_id = 1 | year = 2016 | rating = 10 user_id = 2 | year = 2016 | rating = 50 user_id =

我知道stackoverflow是这个问题的答案,但我有一点不同的情况。 我在第二个表中有很多单元格,但SQL查询只获取第一个单元格。好的,不是所有的查询,只有WHERE标记

例如:
1表

user_id = 1
user_id = 2
user_id = 1 | year = 2015 | rating = 55
user_id = 1 | year = 2016 | rating = 10
user_id = 2 | year = 2016 | rating = 50
user_id = 2 | year = 2016 | rating = 5
2表

user_id = 1
user_id = 2
user_id = 1 | year = 2015 | rating = 55
user_id = 1 | year = 2016 | rating = 10
user_id = 2 | year = 2016 | rating = 50
user_id = 2 | year = 2016 | rating = 5
SQL查询:

$query = "SELECT c.*,v.upvotes
        FROM ".PREFIX."_users c
        LEFT JOIN (SELECT user_id,pol,vid_sporta,year_sport,category,SUM(rating) as upvotes
        FROM ".PREFIX."_userrating
        GROUP BY user_id
        ) v
        ON c.user_id = v.user_id
        WHERE year_sport='2015'
        ORDER BY upvotes DESC";
这个查询只给了我一个用户,whitch拥有2015第一名

我需要SQL查询中的一些while循环:)
请提供帮助:)

似乎有一些问题正在发生

首先,

SELECT user_id,pol,vid_sporta,year_sport,category,SUM(rating) as upvotes
应该是

SELECT user_id,SUM(rating) as upvotes
您只希望包含要返回到查询其余部分的列,任何不属于聚合函数的列也必须出现在
GROUP BY
语句中

第二,这就是为什么你可能只会得到一条记录,那就是你的
所在年份\u sport='2015'
。因为where条件在外部查询中,所以它将您的
左连接
视为
内部连接
,并限制在
用户评级
中包含该
年份的所有结果。将where语句移动到内部查询,您应该可以从
year\u sport=2015
中获得所有用户,但只能获得
upvowers

$query = "SELECT c.*,v.upvotes
        FROM ".PREFIX."_users c
        LEFT JOIN (SELECT user_id,SUM(rating) as upvotes
        FROM ".PREFIX."_userrating
       WHERE year_sport='2015'
        GROUP BY user_id
        ) v
        ON c.user_id = v.user_id
        ORDER BY upvotes DESC";

根据
pol、vid_sporta、year_sport、category
字段的位置,选择这些字段而不对其进行分组可能会导致灾难。。。它只有一条记录,因为只有一条满足WHERE条件……因为groupby;)您的预期结果是什么?谢谢:)但我只需要一个显示一个用户,并由该用户进行评分。@P.Salmon我很震惊您在不知道预期结果的情况下无法回答此问题。@Matt我需要由params进行的完整用户评分。这是我的PREFIX_userrating表中的屏幕截图
如果我删除
按用户id分组
我从数据库中获得正确的数据,但一个用户显示了很多次(DB中有多少单元格-显示了这么多)。如何修复它?:)请注意,如果您知道每个用户在2015年只获得了1个等级,那么您就不需要聚合函数或分组。现在的方式更安全,以防包含多年或有重复记录……但您可以将“SUM(rating)AS upvots”更改为“rating AS upvots”,并在尝试时删除group by子句