MySQL SELECT n基于GROUP BY记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL SELECT n基于GROUP BY记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1879字,纯文字阅读大概需要3分钟。
内容图文
![MySQL SELECT n基于GROUP BY记录](/upload/InfoBanner/zyjiaocheng/905/fe32a19a793645d48d2b284a6d6e0b13.jpg)
可以说我有SQL记录:
Country | Number USA | 300 USA | 450 USA | 500 USA | 100 UK | 300 UK | 400 UK | 1000
我正在做这样的事情:SELECT * FROM table GROUP BY Country.
如果,我想选择仅在每个国家/地区显示2个最大数字的结果,该怎么办?我该如何存档?
结果将是:
Country | Number USA | 450 USA | 500 UK | 400 UK | 1000
解决方法:
样本数据
create table data (Country varchar(10), Number int);
insert into data select
'USA' , 300 union all select
'USA' , 450 union all select
'USA' , 500 union all select
'USA' , 100 union all select
'FR' , 100 union all select
'FR' , 420 union all select
'UK' , 300 union all select
'UK' , 400 union all select
'UK' , 1000;
第一个选项是使用Scrum Meister所显示的变量的伪等级,但在此处作为单个语句呈现
SELECT Country, Number
FROM (
SELECT
Number,
@r := case when @c=country then @r+1 else 1 end rownum,
@c := Country Country
FROM (select @r :=0 , @c := '') x, data
ORDER BY Country, Number DESC
) y
WHERE rownum < 3;
如果您在前端使用它,并且只需要2个计数,那么您可以使用此表单返回列表中的计数(单列)
SELECT
Country,
left(x,locate(',',concat(x,','),locate(',',x)+1)-1) Numbers
FROM (
SELECT
a.Country,
Group_Concat(a.Number) x
From (
select country, number
from data
order by country, number desc) a
group by a.Country
) b
结果是
"Country";"Numbers"
"FR";"420,100"
"UK";"1000,400"
"USA";"500,450"
如果有可能发生关系,那么第二种形式的这种变化将删除关系并显示“每个国家的前2个不同数字”,作为记录.
SELECT distinct x.Country, x.Number
From data x
inner join
(
SELECT
Country,
left(x,locate(',',concat(x,','),locate(',',x)+1)-1) Numbers
FROM (
SELECT
a.Country,
Group_Concat(a.Number) x
From (
select distinct country, number
from data
order by country, number desc) a
group by a.Country
) b
) y on x.Country=y.Country
and concat(',',y.Numbers,',') like concat('%,',x.Number,',%')
order by x.Country, x.Number Desc
结果
"Country";"Number"
"FR";"420"
"FR";"100"
"UK";"1000"
"UK";"400"
"USA";"500"
"USA";"450"
内容总结
以上是互联网集市为您收集整理的MySQL SELECT n基于GROUP BY记录全部内容,希望文章能够帮你解决MySQL SELECT n基于GROUP BY记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。