我正在使用PostgreSQL 8.4.4。我想根据多个条件从表中获取记录,如
1)检查记录是否存在
2) if exists then -> if type_id = 1 then select name如果type_id为2,则选择name,缩写
3)如果记录不存在,则打印为'Missing'
下面是对同一个 的查询select
case
when exists (select NAME || ' ' || ABBREVIATION from CONTACTS_COMPANY where id = 15)
then ( select
case
when type_id = '1'
then (select UPPER(NAME) from CONTACTS_COMPANY where id = 15)
when type_id = '2'
then (select UPPER(NAME) || ' ' || UPPER(ABBREVIATION) from CONTACTS_COMPANY where id = 15)
end
)
else UPPER('MISSING')
end
当触发上面的查询时,我得到错误作为
SQL错误:错误:列"type_id"不存在
第7行:when type_id =' 1 '
我不知道究竟是什么导致错误。任何帮助都会很感激。提前感谢!
假设"type_id"确实存在(您可能已经确定了…?),我会说这个查询的结构不正确。最外层的select漏掉了"from"语句。此外,你的内心陈述是不正确的。它应该看起来像这样:
select
case
when exists
(select ('NAME' || ' ' || 'ABBREVIATION')
from "CONTACTS_COMPANY")
then (
case
when type_id = '1'
then UPPER("NAME")
when type_id = '2'
then UPPER("NAME") || ' ' || UPPER("ABBREVIATION")
end
)
else UPPER('MISSING')
end
from "CONTACTS_COMPANY"
WHERE id='15'
我还没有测试过这个,但是总体结构应该没问题。我希望我已经正确理解了,你们想要做的。如果不是这样,请发表评论:)
更新代码到工作解决方案