gpt4 book ai didi

mysql - 使用 MySQL 计算 a-d、e-h、i-l 范围内的姓氏……

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

我有一个姓氏表,我想计算 A-D 或 E-H 等每个字母范围内的姓氏数量。

我想出了以下查询,它有效,我想听听人们对此的意见以及如何做得更好。

select count(*) FROM people 
group by surname REGEXP '^[a-d].*',
surname REGEXP '^[e-h].*',
surname REGEXP '^[i-l].*',
surname REGEXP '^[m-p].*',
surname REGEXP '^[q-t].*',
surname REGEXP '^[u-z].*';

最佳答案

这是实现此目的的最佳方法(无论如何都使用正则表达式):

select
sum(surname REGEXP '^[a-dA-D].*') as ad_count,
sum(surname REGEXP '^[e-hE-H].*') as eh_count,
sum(surname REGEXP '^[i-lI-L].*') as il_count,
sum(surname REGEXP '^[m-pM-P].*') as mp_count,
sum(surname REGEXP '^[q-tQ-T].*') as qd_count,
sum(surname REGEXP '^[u-zU-Z].*') as uz_count
from people

由于在 mysql 中,true1false0,所以这种优雅的简洁之所以有效,因此 sum(some condition) 是它为真的次数的计数。

顺便说一句,我在你的正则表达式中添加了大写字母。

您可以通过从更有效地计算组的内部选择中进行选择来获得更好的性能(例如,通过在 substr(surname, 1, 1) 上使用 case),然后根据计算出的值对测试求和.

关于mysql - 使用 MySQL 计算 a-d、e-h、i-l 范围内的姓氏……,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724866/

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