没有记录然后错误的情况(postgresql)
Case when no record then error (postgresql)
正在努力解决一个简单的问题,但找不到解决方案。
https://ideone.com/Hisu8H (sqlfiddle mini) 应该是两行,但只出现一行OK。
如果有记录应该是OK的结果。如果没有记录应该有 ERROR 结果。
SELECT
CASE WHEN (SELECT count(*) from code)=0 THEN 'ERROR' else 'OK' end
FROM code
WHERE "CODE_ID"='EXISTS'
问题是,如果 CODE_ID 存在,将有一行 OK,但如果记录丢失,则根本不会提取任何行。
在一个简单的查询中这有效。但不作为条件!
SELECT COALESCE(count(*), 0) FROM code
WHERE "CODE_ID"='ERROR'
提前感谢您提供任何线索!
如果没有符合条件的行,则没有任何内容 returned 并且您不能计算它。
至 return 有关在条件中使用但在数据库中不存在的值的信息,您通常在值列表上使用外部联接:
select t.id,
code.code_id
from (
values ('error'), ('test')
) as t (id)
left join code on code.code_id = t.id;
这本质上是一个 where code_id in ('error', 'test')
查询,它还 return 列出 in
列表中不存在于 table 中的那些值。
这可以用来识别缺失值:
select t.id,
case when code.code_id is null then 'Error' else 'OK' end as status
from (
values ('error'), ('test')
) as t (id)
left join code on code.code_id = t.id;
正在努力解决一个简单的问题,但找不到解决方案。
https://ideone.com/Hisu8H (sqlfiddle mini) 应该是两行,但只出现一行OK。
如果有记录应该是OK的结果。如果没有记录应该有 ERROR 结果。
SELECT
CASE WHEN (SELECT count(*) from code)=0 THEN 'ERROR' else 'OK' end
FROM code
WHERE "CODE_ID"='EXISTS'
问题是,如果 CODE_ID 存在,将有一行 OK,但如果记录丢失,则根本不会提取任何行。
在一个简单的查询中这有效。但不作为条件!
SELECT COALESCE(count(*), 0) FROM code
WHERE "CODE_ID"='ERROR'
提前感谢您提供任何线索!
如果没有符合条件的行,则没有任何内容 returned 并且您不能计算它。
至 return 有关在条件中使用但在数据库中不存在的值的信息,您通常在值列表上使用外部联接:
select t.id,
code.code_id
from (
values ('error'), ('test')
) as t (id)
left join code on code.code_id = t.id;
这本质上是一个 where code_id in ('error', 'test')
查询,它还 return 列出 in
列表中不存在于 table 中的那些值。
这可以用来识别缺失值:
select t.id,
case when code.code_id is null then 'Error' else 'OK' end as status
from (
values ('error'), ('test')
) as t (id)
left join code on code.code_id = t.id;