具有条件值的MySQL列

具有条件值的MySQL列,mysql,case,conditional-statements,Mysql,Case,Conditional Statements,我有一句基本的SQL语句: SELECT p.s1,pr.s1 FROM `prop` p LEFT OUTER JOIN prom pr ON pr.id = p.prom 我的意图是,如果列的值不为null,则该列的值为pr.s1,在其他情况下,该列的值为p.s1。这很简单,但我不知道如何正确操作 非常感谢您的任何意见。您可以使用IFNULL: SELECT IFNULL(pr.s1, p.s1) AS s1 FROM `prop` p LEFT OUTER JOIN prom pr

我有一句基本的SQL语句:

SELECT p.s1,pr.s1 FROM `prop` p LEFT OUTER JOIN prom pr ON pr.id = p.prom
我的意图是,如果列的值不为null,则该列的值为
pr.s1
,在其他情况下,该列的值为
p.s1
。这很简单,但我不知道如何正确操作


非常感谢您的任何意见。

您可以使用
IFNULL

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

您可以使用
IFNULL

SELECT IFNULL(pr.s1, p.s1) AS s1
FROM `prop` p
LEFT OUTER JOIN prom pr
    ON pr.id = p.prom
您可以使用ifnull

 SELECT p.s1, ifnull(pr.s1, p.s1) 
 FROM `prop` p 
 LEFT OUTER JOIN prom pr ON pr.id = p.prom
您可以使用ifnull

 SELECT p.s1, ifnull(pr.s1, p.s1) 
 FROM `prop` p 
 LEFT OUTER JOIN prom pr ON pr.id = p.prom
您可以使用
COALESCE()

虽然您可能有两个相同的列,但我认为您的意思是:

SELECT COALESCE(pr.s1,p.s1) as s1
FROM ...
您可以使用
COALESCE()

虽然您可能有两个相同的列,但我认为您的意思是:

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

为了使事情更加圆满,您还可以使用
合并

SELECT COALESCE(pr.s1, p.s1)
FROM prop p
LEFT OUTER JOIN prom pr
    ON pr.id = p.prom
IFNULL()
上使用
COALESCE()
的一个好处是前者可以接受两个以上的参数。例如,如果在
NULL
值的情况下有两个备份列,则可以执行以下操作:

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

为了使事情更加圆满,您还可以使用
合并

SELECT COALESCE(pr.s1, p.s1)
FROM prop p
LEFT OUTER JOIN prom pr
    ON pr.id = p.prom
IFNULL()
上使用
COALESCE()
的一个好处是前者可以接受两个以上的参数。例如,如果在
NULL
值的情况下有两个备份列,则可以执行以下操作:

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

谢谢你的解释!谢谢你的解释!这是一个简单的改变