具有条件值的MySQL列
我有一句基本的SQL语句:具有条件值的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
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)
谢谢你的解释!谢谢你的解释!这是一个简单的改变