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

SQL三表内连接查询无结果问题排查(orders、stocks、status表)

SQL查询无结果的排查原因

1. 日期条件逻辑完全颠倒

你的where子句中日期范围判断完全写反了:

o.order_date <= date '2023-10-01'
and o.order_date >= date '2023-10-30'

没有任何日期能同时满足"小于等于2023-10-01"且"大于等于2023-10-30",这是导致无结果的核心原因。正确写法应为:

o.order_date >= date '2023-10-01'
and o.order_date <= date '2023-10-30'

或用between简化:

o.order_date between date '2023-10-01' and date '2023-10-30'

2. 输出字段不符合需求

你期望获取stocks表的keyuser、stock_loc字段,但当前查询的select子句仅包含s.keyuser, o.order_date,缺少stock_loc,修正后应改为:

select 
    s.keyuser, s.stock_loc
from 
    ...

3. 内连接可能过滤掉匹配数据

使用inner join时,只有三张表都存在匹配关联数据的记录才会被返回。若存在以下情况,也会导致无结果:

  • stocks表中keyuser='kiki'的记录,无对应orders表数据(o.order_stock_id = s.stocks_id无匹配)
  • 匹配的orders记录,无对应status表数据(sta.status_id = o.order_status_id无匹配)
  • 匹配的orders记录的order_status_id不在(2,3,5)范围内

修正后的完整SQL

select 
    s.keyuser, s.stock_loc
from 
    stocks s
inner join 
    orders o on o.order_stock_id = s.stocks_id
inner join 
    status sta on sta.status_id = o.order_status_id
where 
    o.order_date between date '2023-10-01' and date '2023-10-30'
    and s.keyuser = 'kiki'
    and sta.status_id in (2, 3, 5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:17:07