mysql - MySQL 加入问题

标签 mysql join

我需要一些有关 MySQL SELECT 语句的帮助。不幸的是,这个声明不能正确工作。它似乎是根据学校名称的字母顺序而不是reading_percent_proficient_and_advanced进行排名。我应该如何修复它?

SET @rank=0;
SELECT @rank:=@rank+1 as rank, 
       sy.formatted_school_name, 
       FLOOR(d.reading_percent_proficient + d.reading_percent_advanced) AS reading_percent_proficient_and_advanced 
FROM d_test_scores AS d, 
       sy_2010_2011_school_type AS sy  
WHERE sy.school_id = d.school_id 
       AND sy.school_group = 'public school'
       AND sy.school_type ='elementary' 
ORDER BY reading_percent_proficient_and_advanced DESC

如果我去掉连接,那么这个语句会给我正确的排名(但那时我没有学校名称):

SET @rank=0;
SELECT @rank:=@rank+1 as rank,  
       d.school_id, 
       FLOOR(d.reading_percent_proficient + d.reading_percent_advanced) AS reading_percent_proficient_and_advanced  
FROM d_test_scores AS d 
ORDER BY reading_percent_proficient_and_advanced DESC;

我的加入有什么问题吗?

最佳答案

(猜测)我相信在执行 ORDER BY 排序之前会计算排名。在原始查询中,您的结果恰好在 ORDER BY 之前按照您想要的顺序返回,因此排名是正确的,在高级查询中,结果最初以不同的顺序返回。

尝试将排名添加到已排序学校名称和熟练程度评级集(子查询)中。

关于mysql - MySQL 加入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098282/

相关文章:

mysql - ERD设计的正反面

php - 如何在mysql中插入2条相关记录

SQL 查找重复条目(组内)

mysql - SQL 查询建议(用连接替换存在)

mysql - 相同的Id,不同的值,如果一个不OK,排除所有id

php - 不显示来自数据库和文件的图像

mysql - JOIN LEFT 有多个条件

mysql - 在MYSQL的where like子句中使用子查询

python - Pandas "join"奇怪

mysql - 查询链接 4 个表