我有一个带有字段的sql表(版本9.3 PostgreSQL)(游览字符变化,tourtime int)...我想写一个像case when tour = 'A' then tourtime = 2 when tour = 'B' then tourtime = 3 else 0
等的查询。
然而我收到错误
CASE类型整数和布尔值无法匹配
为什么会这样?
答案 0 :(得分:4)
在你的CASE中你有树枝:
SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee)
在前两个中,您有布尔表达式( case when tour = 'A'
then tourtime = 2
when tour = 'B'
then tourtime = 3
else 0
end
和(tourtime = 2)
),根据列{{1}的值(tourtime = 3)
或true
}。在第三个中,您有一个整数表达式(false
)。
当系统尝试推断结果的类型时,它会匹配这三种类型并发现它们是不同的。
因此,您应该拥有所有整数表达式或布尔表达式,具体取决于您想要的结果。