gpt4 book ai didi

mysql - 选择多个记录 - MySQL

转载 作者:行者123 更新时间:2023-11-29 12:38:05 24 4
gpt4 key购买 nike

尝试按每种类型对记录列表进行排序,每种类型最多 5 条记录。

例如:

我有 25 个不同的 GICS 代码,例如 2050、4010、2540 等。每个GICS代码代表不同类型的行业,例如2050是银行,4010是汽车,2540是化妆品。

现在,每个 GICS 代码都分配给多个公司名称,并给出一个分数。我希望能够从每个 GICS 代码中选择最后 5 个公司。

这可能吗?或者我需要多个sql吗?

下面是我的 SQL:

select g.4digits, c.company_name, os.* from overall_scores os
join company c
on c.company_id = os.company_id
join gics g
on g.company_id = c.company_id
where g.4digits in ((2550), (4010), (2540))
and os.overall_score <> 'NA'
and os.overall_score <> 'NaN'
order by os.overall_score asc limit 5;

最佳答案

MYSQL不支持ROW_NUMBER等可以使用的解析函数。我们可以使用变量来做到这一点

SELECT T.*
FROM (SELECT g.4digits, c.company_name, os.*,
CASE
WHEN @gistype != g.4digits THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS seq,
@gistype := g.4digits AS var_gistype
FROM overall_scores os
JOIN company c
ON c.company_id = os.company_id
JOIN gics g
ON g.company_id = c.company_id
AND g.4digits in ((2550), (4010), (2540))
AND os.overall_score <> 'NA'
AND os.overall_score <> 'NaN'
JOIN (SELECT @rownum := NULL, @gistype := '') r
ORDER BY g.4digits, os.overall_score asc) T
WHERE T.seq <= 5

关于mysql - 选择多个记录 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26472994/

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