在查询中使用多个条件时出错

时间:2015-10-23 10:38:59

标签: php postgresql

我正在使用 PostgreSQL 8.4.4 。我想根据多个条件从表中获取记录,

1)检查记录是否存在

2)如果存在则 - >如果type_id为1则选择名称 如果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行:当type_id =时   '1'

我没有得到究竟导致错误的原因。任何帮助,将不胜感激。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

假设“type_id”确实存在(你可能确定了......?),我会说查询结构不正确。 你最外面的选择错过了一个“来自” - 陈述。 此外,你的内心陈述是不正确的。看起来应该是这样的:

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'

我没有测试过这个,但一般结构应该没问题。我希望你能正确理解,你想要做什么。如果不是这样,请发表评论:)

将代码更新为工作解决方案