【发布时间】:2013-11-28 09:03:06
【问题描述】:
我从客户那里继承了一个简单的表,该表仅在两个字段 shipping_address 和 business_address 中存储了两个地址(送货地址和公司地址)。有一个名为 ship_to 的字段带有 enum('shipping','business'),还有一个字段用于全名。客户希望输出如下:
全名:地址
其中“地址”列应由 ship_to 值选择。如果 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_name、table.ship_to、table.shipping_address 和 table.business_name...我想知道这是否真的需要或者这是一种服务器问题?没有桌子根本行不通。
-
@AramAlvarez 如果未指定表名前缀,会产生什么样的错误?
-
#1054 - '字段列表'中的未知列'shipping_address'
-
非常混乱的情况。你试过
CASE而不是IF吗?还有你在 mysql 控制台中运行查询吗?
标签: mysql if-statement conditional-statements concat