我有一张table item_metadata(item_id, item_name, user_id)
.
我在储存同样的东西 item_id
具有自定义名称,具体取决于 user_id
,如果没有自定义名称可用,我希望使用“默认”名称。
item_id | item_name | user_id
001 | 'Default Name' | NULL
001 | 'Custom Name' | 100
鉴于上述情况,我希望返回我的查询 'Custom Name'
如果我过去 100
作为 user_id
参数,但返回 'Default Name'
如果我过去 101
作为 user_id
参数。
我试过用 COALESCE
, UNION
/ INTERSECT
/ EXCEPT
但我似乎没有得到我想要的结果。
3条答案
按热度按时间5uzkadbs1#
我知道这会让你的问题变得复杂,所以如果这不符合你的情况,那么请在评论中这样说,我会删除它。
我遇到过这样的情况:一个项目有一个默认名称,但我们希望为特定用户显示一个自定义名称。
模型如下:
架构(postgresql v11)
提取所有用户/项目对
db fiddle视图
fwzugrvs2#
你可以用它
coalesce()
这样地:替换
?
与user_id
你要找的。请看演示。
myss37ts3#
如果您想将此用于一个项目:
如果您希望所有项目都使用此选项,请使用
distinct on
: