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

如何修正自左连接tasks表的SQL查询以返回所有验证任务

修正LEFT JOIN查询以保留无对应导入任务的验证任务

问题原因

你的查询中,imp.type='import'被放在了WHERE子句里。对于没有对应导入任务的验证任务(比如id=7的记录),LEFT JOIN后imp表的所有字段都是NULL,NULL='import'的判断结果不成立,因此这部分记录被WHERE条件过滤掉,导致预期的记录未返回。

修正后的SQL

SELECT 
    val.id AS val_task,
    imp.id AS imp_task,
    val.doc_id AS doc_id
FROM tasks val
LEFT JOIN tasks imp
    ON val.doc_id = imp.doc_id 
    AND imp.type = 'import' -- 将imp的类型条件移到JOIN的ON子句中
WHERE val.type = 'validation' -- 仅筛选验证任务

说明

  • 将imp.type='import'从WHERE子句移到LEFT JOIN的ON子句中,这样在关联时只会匹配类型为import的任务,没有匹配到的情况下imp字段会保留NULL,不会被过滤。
  • WHERE val.type='validation'确保我们只获取所有验证任务,符合需求中"显示所有验证任务"的要求。

验证结果

执行上述查询后,会得到你预期的结果:

val_task | imp_task | doc_id
---------|----------|-------
2        | 3        | 7
5        | 6        | 8
7        | NULL     | 9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:40:13