You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL获取首个非空frequency记录并按length升序排序的实现

需求说明

从dataset表中筛选出word包含"aeto"且length≥3的记录,并按以下规则获取第一条记录:

  1. 优先取frequency不为空的记录中,按length升序排序后的第一条
  2. 若没有frequency非空的记录,则取所有符合筛选条件的记录中按length升序排序后的第一条

尝试过的SQL语句

语句1

select word, length, frequency 
from `dataset` 
where `word` LIKE '%aeto%' 
   and `length` >= 3 
ORDER BY length ASC,frequency desc;

语句2

select word, length, frequency 
from `dataset` 
where `word` LIKE '%aeto%' 
   and `length` >= 3 
ORDER BY CASE WHEN frequency IS NULL THEN length
         ELSE frequency
         END
    , length asc, `frequency` desc

初步解决方案思路

  • 先执行查询获取frequency非空且按length升序排序的记录;若没有符合条件的结果,则执行第一条SQL并取第一条记录

预期结果

  • 基于样本数据,最终结果应为PHAETON
  • 若移除PHAETON和PRAETORIAN(二者的frequency均非空),则最终结果应为PRAETOR

表结构与样本数据说明

dataset表包含三个字段:

  • word:字符串类型,存储单词
  • length:整数类型,存储单词长度
  • frequency:整数类型,存储出现频次,允许为空

样本数据中符合筛选条件的记录包括:PHAETON(length=7,frequency=10)、PRAETORIAN(length=9,frequency=5)、PRAETOR(length=7,frequency=null)等。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:54:56