PostgreSQL函数case语句中的子查询返回多行
因此,我编写了一个postgreSQL函数,该函数应该基于大量可选输入参数对表进行搜索,我用许多AND语句对这些参数进行分组。然而,这一点:PostgreSQL函数case语句中的子查询返回多行,sql,postgresql,postgresql-9.1,case-when,Sql,Postgresql,Postgresql 9.1,Case When,因此,我编写了一个postgreSQL函数,该函数应该基于大量可选输入参数对表进行搜索,我用许多AND语句对这些参数进行分组。然而,这一点: AND ( (newcheck IS NULL) OR ( newcheck IS NOT NULL AND product.id IN( CASE WHEN newcheck='New' THEN (SELECT product.id FROM product WHERE produ
AND
(
(newcheck IS NULL)
OR
(
newcheck IS NOT NULL AND product.id IN(
CASE WHEN newcheck='New'
THEN
(SELECT product.id FROM product WHERE product.anew IS true)
ELSE
(SELECT product.id from product WHERE product.anew IS false)
END)
)
)
给我一个
ERROR: more than one row returned by a subquery used as an expression
这并没有多大帮助,因为我确实希望它返回远不止一行。
newcheck变量的值将从web表单中的下拉菜单发送,因此它只能是“新”或“旧”。
你知道是什么导致了这个问题吗 试试以下方法:
AND ((newcheck IS NULL)
OR (newcheck IS NOT NULL
AND product.id IN (SELECT product.id
FROM product
WHERE product.anew = CASE WHEN newcheck='New'
THEN true
ELSE false
END))
问题是,每个subselect都返回多行,
CASE
语句期望每个分支都有一个结果。好吧,当我将newcheck设置为除“New”之外的任何值时,这似乎都能很好地工作。如果它是“新的”,我只得到一行作为结果。。。