具有条件值的MySQL列

时间:2016-07-07 10:54:36

标签: mysql case conditional-statements

我有这个基本的SQL句子:

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

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

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

4 个答案:

答案 0 :(得分:2)

您可以使用IFNULL

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

答案 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)

答案 2 :(得分:1)

您可以使用ifnull

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

答案 3 :(得分: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 ...