mysql分组查询。
select * from A where age=(select max(age) from A where sex="男")or age=(select max(age) from A where sex="女")解释:先用两个子查询分别把男女生中年龄最大的数字筛选出来,然后在整个表中寻找对应年龄的男生与女生。但是这样的话,男女生中年龄不是最大的也可能被选出来因此,要分别查出来最高年龄的男生与女生,再用union结合到一个视图下。由于不能用union方式,所以解决方法如下:select * from A where (age,sex) in (select age,sex from A where 序列号="1" or 序列号="11" group by sex order by age desc)解释:先把表中的男女分组,组内按年龄的降序排列。因为很清楚男生女生的具体数量,那么就能在第一行和第十一行找到代表年龄最大的两个age数和对应的性别。然后,在整个表中进行一个条件查询。其实写到这里,我觉得如果不能用(age,sex)双列条件判断,那么只能用union了
mysql分组查询。
select * from A where age=(select max(age) from A where sex="男")or age=(select max(age) from A where sex="女")解释:先用两个子查询分别把男女生中年龄最大的数字筛选出来,然后在整个表中寻找对应年龄的男生与女生。但是这样的话,男女生中年龄不是最大的也可能被选出来因此,要分别查出来最高年龄的男生与女生,再用union结合到一个视图下。由于不能用union方式,所以解决方法如下:select * from A where (age,sex) in (select age,sex from A where 序列号="1" or 序列号="11" group by sex order by age desc)解释:先把表中的男女分组,组内按年龄的降序排列。因为很清楚男生女生的具体数量,那么就能在第一行和第十一行找到代表年龄最大的两个age数和对应的性别。然后,在整个表中进行一个条件查询。其实写到这里,我觉得如果不能用(age,sex)双列条件判断,那么只能用union了
mysql分组查询。
错误方法:
select * from A where age=(select max(age) from A where sex="男")
or age=(select max(age) from A where sex="女")
解释:先用两个子查询分别把男女生中年龄最大的数字筛选出来,然后在整个表中寻找对应年龄的男生与女生。但是这样的话,男女生中年龄不是最大的也可能被选出来
因此,要分别查出来最高年龄的男生与女生,再用union结合到一个视图下。
由于不能用union方式,所以解决方法如下:
select * from A where (age,sex) in (select age,sex from A where 序列号="1" or 序列号="11" group by sex order by age desc)
解释:先把表中的男女分组,组内按年龄的降序排列。因为很清楚男生女生的具体数量,那么就能在第一行和第十一行找到代表年龄最大的两个age数和对应的性别。然后,在整个表中进行一个条件查询。
其实写到这里,我觉得如果不能用(age,sex)双列条件判断,那么只能用union了
如何在mysql中查询每个分组的前几名
可以使用集中方法去解决“每个分组中最大的条目”,这类问题已经进一步扩展到查询每组中前N个条目的方法。之后我们深入探讨了一些MySQL特定的技术,这些技术看起来有一些傻和笨。但是如果你需要榨干服务器的最后一点性能,你就需要知道什么时候去打破规则。对于那些认为这是MySQL本身的问题的人,我要说这不是,我曾经看到过使用其他平台的人也在做着同样的事情,如SQL Server。在每个平台上都会有很多特殊的小技巧和花招,使用他们的人必须去适应它。可以加个时间维度表,以时间维度表为主表!(id,month)id 是和你的表左连接,month是1到12月,一楼说的几个方法!应该不好实现的吧?不用写存储过程那么复杂!举个例子
select a.rq,
b.xssr
from date_table a left jion table1 b
on a.id=b.id