我有以下 SQL,如果嵌套 SQL 中不存在该项目,我希望 order_item_wo_id
列返回 null 并返回 oi.cop_workorder_id
列的值> 如果是的话。
我怎样才能做到这一点?
SELECT
cop.wo_id,
CASE
WHEN EXISTS (SELECT oi.cop_workorder_id
FROM oseo_orderitem oi
WHERE oi.cop_workorder_id = cop.wo_id) THEN
oi.cop_workorder_id
ELSE null
END AS order_item_wo_id
FROM oseo_cop_wo cop
where cop.wo_id = '123';
看起来 oi.cop_workorder_id
在嵌套 sql 之外没有被识别。
ERROR: missing FROM-clause entry for table "oi"
最佳答案
除非我遗漏了什么,否则你似乎把它复杂化了。 只需使用 LEFT JOIN:
SELECT
cop.wo_id,
oi.cop_workorder_id AS order_item_wo_id
FROM oseo_cop_wo AS cop
LEFT JOIN oseo_orderitem AS oi
ON oi.cop_workorder_id = cop.wo_id
WHERE cop.wo_id = '123';
关于sql - 嵌套sql的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383003/