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

如何按列优先级查询非空记录:优先First,其次Second,最后Third

按优先级筛选非空列记录的SQL实现

示例表结构

IDFirstSecondThirdAmount
1X44
255
333
422
5X11

需求规则

  • 按 First → Second → Third 的优先级筛选记录
  • 若 First 列存在非空值,仅返回该列非空的记录
  • 若 First 列全为空,则检查 Second 列,返回该列非空的记录
  • 若 Second 列也全为空,则返回 Third 列非空的记录

解决方案SQL

SELECT *
FROM your_table
WHERE 
    -- 优先级1:存在First非空时,取First非空记录
    EXISTS (SELECT 1 FROM your_table WHERE First IS NOT NULL AND First <> '')
    AND First IS NOT NULL AND First <> ''
    -- 优先级2:First全空但存在Second非空时,取Second非空记录
    OR NOT EXISTS (SELECT 1 FROM your_table WHERE First IS NOT NULL AND First <> '')
    AND EXISTS (SELECT 1 FROM your_table WHERE Second IS NOT NULL AND Second <> '')
    AND Second IS NOT NULL AND Second <> ''
    -- 优先级3:First和Second都全空时,取Third非空记录
    OR NOT EXISTS (SELECT 1 FROM your_table WHERE First IS NOT NULL AND First <> '')
    AND NOT EXISTS (SELECT 1 FROM your_table WHERE Second IS NOT NULL AND Second <> '')
    AND Third IS NOT NULL AND Third <> '';

逻辑说明

针对示例表,First 和 Second 列均无任何非空值,因此触发优先级3的筛选条件,最终返回 Third 列非空的ID为1和5的记录,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:25:27