有什么常用的做法吗 SELECT 结果作为类型化值,例如函数参数?会是这样吗?
SELECT
func((SELECT number FROM numbers WHERE user_id = 1 LIMIT 1).number::numeric)
我想到了 CURSOR 但我不太确定。谢谢你的建议!我使用的是postgresql,所以如果有任何特定的解决方案,请随意分享。
CURSOR
s1ag04yj1#
使用 FROM 子句或公共表表达式:
FROM
SELECT func(a.x, b.y) FROM (SELECT ... LIMIT 1) AS a CROSS JOIN (SELECT ... LIMIT 1) AS b;
或
WITH a AS (SELECT ... LIMIT 1), b AS (SELECT ... LIMIT 1) SELECT func(a.x, b.y) FROM a CROSS JOIN b;
ulmd4ohb2#
这不是你想要的吗?
func( (SELECT number FROM numbers WHERE user_id = 1 LIMIT 1)::numeric )
子查询返回(最多)一个值,因此它是标量子查询,相当于查询中的标量引用。也就是说,还有很多其他的表达方式。例如:
func( (SELECT number::numeric FROM numbers WHERE user_id = 1 LIMIT 1) )
或:
(SELECT func(number::numeric) FROM numbers WHERE user_id = 1 LIMIT 1)
或者搬到 from 子句并使用横向联接。或在cte或子查询中计算结果。
from
2条答案
按热度按时间s1ag04yj1#
使用
FROM
子句或公共表表达式:或
ulmd4ohb2#
这不是你想要的吗?
子查询返回(最多)一个值,因此它是标量子查询,相当于查询中的标量引用。
也就是说,还有很多其他的表达方式。例如:
或:
或者搬到
from
子句并使用横向联接。或在cte或子查询中计算结果。