2017-06-13 65 views
0

比如我在t_shops 3 NOT NULL列:ID,名稱,語言環境。區域設置列的默認值爲「」空字符串。如果where語句不匹配,我需要選擇默認值。我正在嘗試使用COALESCE函數,但它僅適用於NULL列。我有PostgreSQL數據庫。選擇默認值,如果WHERE語句犯規比賽

SELECT locale FROM t_shops WHERE id = '123' locale = 'not what i have in DB' 

回答

0

LIMIT 1

SELECT locale 
FROM t_shops 
WHERE id = '123' AND locale = 'not what i have in DB' 
UNION ALL 
SELECT 'default locale goes here' 
LIMIT 1 ; -- t_shops.locale if available, else default 

COALESCE +子選擇

​​

響應評論

ACTUA LLY,我不知道如何回答你的評論,因爲我不知道你想做什麼。

能否請您發表您的product表的表模式? 事情是這樣的:

CREATE TABLE product (id SERIAL PRIMARY KEY, 
         locale TEXT NOT NULL, 
         other_column INT NOT NULL); 

並與你想要做什麼正常的英語單詞形容。 也許你甚至需要LEFT JOIN兩次以相同的表...

+0

你好,請問有什麼辦法與連接表,使其?喜歡的東西 SELECT COALESCE(join1,join2) FROM t_products LEFT JOIN t_products join1 ON join1.locale = '不是我有什麼(NULL)' LEFT JOIN t_products join2 ON join2.locale = '默認' –