(select `pk_irfa`
from `incident_reports_form_answers`
where inc_question_id = 338
AND answer_text in ("N/A", "Graeme Clark"))
union
(select `pk_irfa`
from `incident_reports_form_answers`
where inc_question_id = 339
AND answer_text in ("Manager", "Pass"))
我希望查询查询以这样的方式工作:如果其中一个查询返回null联合,则不应返回任何记录。例如,如果question_id 338返回null,则整个查询必须返回空数据。有什么建议吗?
答案 0 :(得分:0)
我认为您不需要select pk_irfa
from incident_reports_form_answers
where (inc_question_id = 338 AND answer_text in ('N/A', 'Graeme Clark'))) or
(inc_question_id = 339 AND answer_text in ('Manager', 'Pass'))
:
pk_irfa
然后,如果您同时需要select pk_irfa
from incident_reports_form_answers
where (inc_question_id = 338 AND answer_text in ('N/A', 'Graeme Clark'))) or
(inc_question_id = 339 AND answer_text in ('Manager', 'Pass'))
group by pk_irfa
having count(distinct inc_question_id) = 2;
,请使用聚合:
[2020-10-06T14:49:07.485Z] Requirements
[2020-10-06T14:49:07.485Z] ext_TPC/11.8.128@prod/master from 'conan-extTPC' - Downloaded
[2020-10-06T14:49:07.485Z] ext_cli_plugins/11.800.30@prod/master from 'conan-CliPlugins' - Downloaded
[2020-10-06T14:49:07.485Z] ext_dotnet_plugins/11.800.44@prod/master from 'conan-DotNetPlugins' - Downloaded
[2020-10-06T14:49:07.485Z] Packages
[2020-10-06T14:49:07.485Z] ext_TPC/11.8.128@prod/master:63da998e3642b50bee33f4449826b2d623661505 - Missing
[2020-10-06T14:49:07.485Z] ext_cli_plugins/11.800.30@prod/master:63da998e3642b50bee33f4449826b2d623661505 - Download
[2020-10-06T14:49:07.485Z] ext_dotnet_plugins/11.800.44@prod/master:63da998e3642b50bee33f4449826b2d623661505 - Download
[2020-10-06T14:49:07.485Z]
[2020-10-06T14:49:07.485Z] Installing (downloading, building) binaries...
[2020-10-06T14:49:07.485Z]
[2020-10-06T14:49:07.485Z] ERROR: Missing binary: ext_TPC/11.8.128@prod/master:63da998e3642b50bee33f4449826b2d623661505
[2020-10-06T14:49:07.485Z] ext_TPC/11.8.128@prod/master: WARN: Can't find a 'ext_TPC/11.8.128@prod/master' package for the specified settings, options and dependencies:
[2020-10-06T14:49:07.485Z] - Settings: arch=x86_64, build_type=Release, compiler=Visual Studio, compiler.runtime=MD, compiler.version=14, os=Windows
[2020-10-06T14:49:07.485Z] - Options:
[2020-10-06T14:49:07.485Z] - Dependencies:
[2020-10-06T14:49:07.485Z] - Requirements:
[2020-10-06T14:49:07.485Z] - Package ID: 63da998e3642b50bee33f4449826b2d623661505
[2020-10-06T14:49:07.485Z]
[2020-10-06T14:49:07.485Z] ERROR: Missing prebuilt package for 'ext_TPC/11.8.128@prod/master'
[2020-10-06T14:49:07.485Z] Try to build it from sources with "--build ext_TPC"
[2020-10-06T14:49:07.485Z] Or read "http://docs.conan.io/en/latest/faq/troubleshooting.html#error-missing-prebuilt-package"
[2020-10-06T14:49:07.485Z]
script returned exit code 1
答案 1 :(得分:0)
您可以在某些CTE的帮助下进行处理:
WITH cte1 AS (
SELECT pk_irfa
FROM incident_reports_form_answers
WHERE inc_question_id = 338 AND answer_text IN ('N/A', 'Graeme Clark')
),
cte2 AS (
SELECT pk_irfa
FROM incident_reports_form_answers
WHERE inc_question_id = 339 AND answer_text IN ('Manager', 'Pass')
)
SELECT pk_irfa FROM cte1 WHERE (SELECT COUNT(*) FROM cte2 > 0)
UNION ALL
SELECT pk_irfa FROM cte2 WHERE (SELECT COUNT(*) FROM cte1 > 0);
请注意,只有在a)其CTE具有结果集,和 b)联合的另一半也具有结果集的情况下,联合的每一半才返回结果。
戈登提供了一种无需使用联合即可表达逻辑的方法,但以上内容与您所使用的原始逻辑非常接近。
答案 2 :(得分:0)
with x as (
select a1.pk_irfa irfa1, a2.pk_irfa irfa2
from
incident_reports_form_answers a1
inner join incident_reports_form_answers a2
on
a1.inc_question_id = 338 AND a1.answer_text in ('N/A', 'Graeme Clark') and
a2.inc_question_id = 339 AND a2.answer_text in ('Manager', 'Pass')
)
select irfa1 as pk_irfa from x
union all
select irfa2 from x
如果连接失败,将不会有行。。我唯一的问题是您的条件是否在所有情况下都唯一地标识了一行,或者您是否会在某个时候遭受笛卡尔爆炸