我有这个基本的SQL句子:
SELECT p.s1,pr.s1 FROM `prop` p LEFT OUTER JOIN prom pr ON pr.id = p.prom
如果列不为空,我的意图是列为pr.s1
,而在其他情况下为p.s1
。这很简单,但我不知道如何正确地做到这一点。
非常感谢任何想法,谢谢。
答案 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 ...