2016-07-07 46 views
0

MySQL的专栏中,我有这个基本的SQL语句:与条件值

SELECT p.s1,pr.s1 FROM `prop` p LEFT OUTER JOIN prom pr ON pr.id = p.prom 

我的目的是与的pr.s1值一列,如果它不为空,而在其他情况下p.s1。这很简单,但我不知道如何正确地做到这一点。

任何想法将非常感激,谢谢。

回答

2

您可以使用IFNULL

SELECT IFNULL(pr.s1, p.s1) AS s1 
FROM `prop` p 
LEFT OUTER JOIN prom pr 
    ON pr.id = p.prom 
+0

这么快就回答,谢谢! –

+0

其简单的变化 –

1

您可以使用IFNULL

SELECT p.s1, ifnull(pr.s1, p.s1) 
FROM `prop` p 
LEFT OUTER JOIN prom pr ON pr.id = p.prom 
+0

这么快就回答,谢谢! –

1

您可以使用COALESCE()

SELECT p.s1,COALESCE(pr.s1,p.s1) 
FROM `prop` p 
LEFT OUTER JOIN prom pr 
ON pr.id = p.prom 

虽然你可能有两个相同的列,所以我想你的意思是:

SELECT COALESCE(pr.s1,p.s1) as s1 
FROM ... 
+1

如此快速的回答,谢谢! –

2

为了更加全面,您也可以使用COALESCE

SELECT COALESCE(pr.s1, p.s1) 
FROM prop p 
LEFT OUTER JOIN prom pr 
    ON pr.id = p.prom 

一个好处有关使用COALESCE()IFNULL()是,前者可以采取两个以上的参数。所以,如果,例如,你在一个NULL值的情况下,有两个备份列,你可以这样做:

SELECT COALESCE(pr.s1, p.s1, p.someOtherCol) 
+1

谢谢你的解释! –