为什么sql的groupby多条件查询为什么不能按照顺序出现?
这是我的表:
select * from user_profile
group by university,id
ORDER BY FIELD(gender,'male','female');
但是结果却是这样的,完全是乱的,跟我预想的完全不一样,可是我感觉我的想法没有错啊
用法不对。group by的作用是通过它后面的字段将数据集划分成若干个子集,然后对子集进行数据处理,如汇总求和,需要在select中使用聚合函数。
你直接order by university, gender看看是否你需要的结果
对于这个问题,你想要按照学校进行分组,并按照性别进行排序,但是结果却是乱序的。这是因为在SQL的GROUP BY子句中,并不保证分组后的结果按照指定的顺序出现。这可能是因为GROUP BY的实现方式导致的。
为了解决这个问题,你可以采用子查询的方式来实现。首先,在子查询中按照学校进行分组,并按照学校和性别进行排序。然后,在外部查询中再次按照学校进行分组,这样就可以得到按照学校分组后按照性别排序的结果。
以下是修改后的SQL语句示例:
SELECT 学校, 性别
FROM (
SELECT *
FROM [表名]
ORDER BY 学校, 性别
) AS subquery
GROUP BY 学校
这样,你就可以得到按照学校分组后按照性别排序的结果了。
希望这个解决方案能够帮助到你!如果还有其他问题,请随时提问。
首先,你为什么要用字符串保存性别呢,一般用0和1表示性别。
其次是你这个是什么数据库,field函数都没见过,如果是mysql,可以这样
select * from user_profile
group by university
ORDER BY if(gender='male', 0, 1);