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

Snowflake执行子查询遇函数'='参数类型不匹配错误,请求解决

SQL错误排查与解决

错误原因分析

  • 最内层子查询返回event_name和category两个字段,但pt.event_name IN (...)要求子查询返回单列数据,导致字符串类型与行类型无法匹配,触发类型错误。
  • 中间子查询返回event_name和physician_id两个字段,外层ph.physician_id IN (...)仅需要单列的physician_id,冗余的字段进一步加剧了类型不匹配问题。

修正后的子查询写法

SELECT ph.physician_id
FROM physician_speciality ph
WHERE ph.physician_id IN (
    SELECT pt.physician_id  -- 仅返回需匹配的physician_id列
    FROM patient_treatment pt
    WHERE pt.event_name IN (
        SELECT ec.event_name  -- 仅返回需匹配的event_name列
        FROM event_category ec
        WHERE ec.category = 'Procedure'
    )
);

更高效的JOIN写法

用JOIN替代嵌套子查询,通常性能更优,同时避免类型匹配问题:

SELECT DISTINCT ph.physician_id
FROM physician_speciality ph
JOIN patient_treatment pt ON ph.physician_id = pt.physician_id
JOIN event_category ec ON pt.event_name = ec.event_name
WHERE ec.category = 'Procedure';

添加DISTINCT是为了避免同一医生ID因多次执行操作被重复返回。

预期结果

根据提供的样本数据,最终会返回以下符合条件的医生ID:1000、2000、4000、6000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:01:39