【发布时间】:2017-06-19 11:47:58
【问题描述】:
例如,我在 t_shops 中有一个表和 3 个 NOT NULL 列:id、name、locale。语言环境列的默认值为“”空字符串。如果 where 语句与 AND 不匹配,我需要选择默认值,我需要通过加入同一个表并传递给 COALESCE 函数来做到这一点。我知道如何通过 WHERE 子句中的 COALESCE 和 UNION ALL 来做到这一点,但我需要加入
SELECT COALESCE(arg1.locale, 'default') currentLocale
,A.*
FROM t_product_attrs A
INNER t_product_attrs arg1
ON A.locale = arg1.locale
AND A.product_id = arg1.product_id
WHERE arg1.locale = 'not what i have in DB'
AND arg1.product_id = 100101
【问题讨论】:
-
(1) 我删除了不兼容的数据库标签。请仅使用您正在使用的数据库进行标记。 (2) 提供样本数据和期望的结果。
-
如果你使用的是MsSql,你也可以结合NULLIF(arg1.locale, ' ')
标签: sql postgresql