【发布时间】:2016-05-05 15:40:37
【问题描述】:
美好的一天!
我尝试执行以下脚本:
SELECT
concat_ws(", ",if(dep.id_departamento=0,"",ifnull(dep.descripcion,"")),
if(mun.id_municipio=0,"",ifnull(mun.descripcion,"")) ,
if(ifnull(vi.zona ,0)=0,"", cast(vi.zona as char))) as concatAddress
FROM visados vi
left join municipios mun on mun.id_municipio = vi.id_municipio
left join departamentos dep on dep.id_departamento = vi.id_departamento
表格信息:
Visados - vi
+-------+--------------------+-----------------+---------+
| id | id_departamento | id_municipio | zona |
+-------+--------------------+-----------------+---------+
| 1 | 1 | 1 | 5 |
+-------+--------------------+-----------------+---------+
市政 - mun
+------------------+---------------+
| id_municipio | descripcion |
+------------------+---------------+
| 1 | chimaltenango |
+------------------+---------------+
部门 - 部门
+---------------------+---------------+
| id_departamento | descripcion |
+---------------------+---------------+
| 1 | chimaltenango |
+---------------------+---------------+
正确的结果应该是:
+------------------------------------+
| concatAddress |
+------------------------------------+
| chimaltenango, chimaltenango, 5 |
+------------------------------------+
但我的结果只有:
+------------------+
| concatAddress |
+------------------+
| chimaltenango |
+------------------+
不连接其他 2 个值字段。
发生了什么?
LocalServer:MySQL 5.6.25 版本
谢谢!
【问题讨论】:
-
我试过你的查询并得到正确的结果:sqlfiddle.com/#!9/4d0ac3/1
-
太奇怪了。我在本地服务器和生产服务器的链接中执行相同的信息,我得到了同样的错误。
-
不应该
mun.id_departmento是dep.id_departmento吗?您实际上不需要将别名放在表格图中,您在其上方有表格名称。 -
您的查询必须与您显示的不同。因为即使连接没有找到匹配项,
IFNULL也会阻止连接空值,因此您应该始终使用两个逗号,例如chimaltenango, , 5。 -
我修改了别名,用一些条件查询。