gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:29:21 25 4
gpt4 key购买 nike

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

例如:
1 表:

user_id = 1
user_id = 2

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";

这个查询只给我一个用户,他是 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 语句中。

其次,这就是为什么您可能只获得 1 条记录的原因是您的 WHERE year_sport = '2015' 的位置。因为 where 条件在外部查询中,所以它将您的 LEFT JOIN 视为 INNER JOIN 并限制所有包含 year_sport 的结果用户评级。将 where 语句移动到您的内部查询,您应该获得所有用户,但只有来自 year_sport =2015upvotes

$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";

关于mysql - 如何按其他表值排序sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37886733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com