我使用postgres和GOLANG
基本上,我想传入一个2D数组(不一定是2D数组,可以是结构体或JSON对象)。如果第一个值与产品类别匹配,则添加第二个值,否则添加0
如果它不是一个2D数组,100表示是,0表示否
...
+ (CASE WHEN products.category IN $1 THEN 100 ELSE 0 END)
...
$1只是类别的一个简单片段
我曾以为,自己是一个平凡的人,却又是一个平凡的人。如果产品类别是1,我可以加100,如果是3,我可以加50,以此类推。。。否则我们就加0
所以伪代码看起来像这样。..
+ (CASE WHEN products.category IN ($1).x THEN ($1).y ELSE 0 END)
这个想法是我可以通过API调用升级产品的排序值。
我玩过unnest,尝试过一些循环的东西,但不能完全理解它,任何SQL或GOLANG的建议。我真的想让他们在SQL查询中保持繁重的工作
1条答案
按热度按时间bihw5rsg1#
实际上我已经弄明白了,但我没有使用CASE WHEN IN,我只是创建一个json_object的表,并执行左联接和COALESCE
所以在我的API中,我只是以'{{1,20},{3,100}}'格式发送json对象作为字符串,然后在我的查询中传递这个字符串,下面是我的查询的简化版本: