条件CONCAT的MySQL语法取决于字段内容?

条件CONCAT的MySQL语法取决于字段内容?,mysql,if-statement,conditional-statements,concat,Mysql,If Statement,Conditional Statements,Concat,我从一个客户机继承了一个简单的表,它只在两个字段shipping_address和business_address中存储了两个地址(shipping address和business address)。有一个名为ship_to的字段,带有enum('shipping','business'),还有一个全名字段。客户端希望输出为: 全名:地址 其中“地址”列应由ship_值选择。如果ship_to=shipping,则使用shipping_address列。如果ship_to=business,则

我从一个客户机继承了一个简单的表,它只在两个字段shipping_address和business_address中存储了两个地址(shipping address和business address)。有一个名为ship_to的字段,带有enum('shipping','business'),还有一个全名字段。客户端希望输出为:

全名:地址

其中“地址”列应由ship_值选择。如果ship_to=shipping,则使用shipping_address列。如果ship_to=business,则使用business_address列

例如:

Joe Smith: Roach Street #10, Rats Village
如何在IF条件下使用CONCAT?我在猜测类似的事情,这显然只是一个想法:

SELECT CONCAT( full_name, ':', IF (ship_to=='shipping', shipping_address, business_address ) AS contact FROM `table`
但是,这样做的正确语法是什么?

缺少结尾


您缺少了一个结束符
,而且在SQL中,比较是用一个
=
而不是
=
完成的。我刚刚尝试过,但只有在字段前面加前缀时才有效,就是这样,如果我指定table.full\u name、table.ship\u to、table.shipping\u address和table.business\u name……我想知道这是真的需要还是服务器问题?如果没有表,它根本无法工作。@AramAlvarez如果没有指定表名前缀,会产生什么样的错误?#1054-字段列表中的未知列“shipping_address”非常混乱。您是否尝试了
CASE
而不是
IF
?您是否也在mysql控制台中运行了查询?
SELECT 
CONCAT( full_name, ':', IF (ship_to='shipping', shipping_address, business_address )) as    contact
FROM TableName