为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【DM版本】:8 【操作系统】:银河麒麟 【CPU】:X86 【问题描述】*:单独查询子语句会报错字段不存在 子查询时 不会提示字段不存在 并且查出来的结果集也不对 还没测试delete是否可以 如果可以的话 问题挺大的
个人觉得这个应该是SQL作用域范围的正常表现,在Oracl、PostgreSQL里也会是一样的。
建议给表加别名,通过别名来控制字段的归属,能避免SQL理解上的歧义。
类似于下面这样的写法在SQL执行时就能发现job_id不存在于crawl_job表的问题了
SELECT A.* FROM download_page A WHERE A.job_id IN (SELECT B.job_id FROM crawl_job B WHERE B.start_date >= '2025-05-07' )
或者,用下面这样的写法,也能避免出现歧义
SELECT A.* FROM download_page A WHERE EXISTS(SELECT 1 FROM crawl_job B WHERE B.start_date >= '2025-05-07' AND A.job_id = B.job_id )
个人觉得这个应该是SQL作用域范围的正常表现,在Oracl、PostgreSQL里也会是一样的。
建议给表加别名,通过别名来控制字段的归属,能避免SQL理解上的歧义。
类似于下面这样的写法在SQL执行时就能发现job_id不存在于crawl_job表的问题了
SELECT A.* FROM download_page A WHERE A.job_id IN (SELECT B.job_id FROM crawl_job B WHERE B.start_date >= '2025-05-07' )
或者,用下面这样的写法,也能避免出现歧义
SELECT A.* FROM download_page A WHERE EXISTS(SELECT 1 FROM crawl_job B WHERE B.start_date >= '2025-05-07' AND A.job_id = B.job_id )