sql - MYSQL CONCAT() 失败但我不知道为什么

标签 sql mysql concatenation

需要一些帮助来理解为什么我的 concat() 失败以及如何修复它。我从未使用过 concat() 但遇到过这样一种情况,我需要从另一个表中获取一个 unit_nbr 并将另一个字段连接到它以在主选择中创建一个字段。

这是我使用的 CONCAT():CONCAT(b.name, ' - ', unit_nbr) as lease_name

我正在寻找的“lease_name”的输出是这样的:John Doe - Unit 123

这是我的 SQL:

SELECT a.lease_id, a.occupant_id, a.unit_id, (SELECT xx.unit_nbr FROM p_unit xx WHERE xx.unit_id = a.unit_id) as unit_nbr, c.name as prop_name, d.p_name, CONCAT(b.name, ' - ', unit_nbr) as lease_name 

FROM o_leases a, p_occupants b, properties c, portfolio d 

WHERE a.occupant_id = b.occupant_id 
AND b.property_id = c.properties_id 
AND c.portfolio_id = d.portfolio_id   
AND a.archived = 1';

谁能帮帮我?谢谢。

最佳答案

您不能在 SELECT 中使用字段别名:CONCAT(b.name, ' - ', unit_nbr) (unit_nbr 是别名) 尝试

SELECT aaa.*, CONCAT(aaa.name, ' - ', aaa.unit_nbr) as lease_name   
FROM
(  
 SELECT a.lease_id, a.occupant_id, a.unit_id, a.name,
 (SELECT xx.unit_nbr FROM p_unit xx WHERE xx.unit_id = a.unit_id) as unit_nbr, 
  c.name as prop_name, d.p_name     

FROM o_leases a, p_occupants b, properties c, portfolio d 

WHERE a.occupant_id = b.occupant_id 
AND b.property_id = c.properties_id 
AND c.portfolio_id = d.portfolio_id   
AND a.archived = '1')aaa;

另一种解决方案是将CONCAT中的unit_nbr替换为子查询( ... CONCAT(aaa.name, ' - ', (SELECT xx.unit_nbr FROM p_unit xx WHERE xx.unit_id = a.unit_id)) as lease_name...

关于sql - MYSQL CONCAT() 失败但我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408351/

相关文章:

linux - 使用分隔符连接多个 yaml 文件

sql - 使用 Oracle 将 XML 请求插入到 clob 列中

mysql - SQL:单个评论者留下的评论数

mysql - mysql 中的 count(*) 只返回一条记录

mysql - 获取Postgresql中某个列值仅存在于特定组中的记录

JavaScript 数组串联

mysql - 合并两列的值并插入到ms sql中的另一个表中

java - 无法从 Sqlite 数据库中的游标窗口读取第 0 行,第 -1 列

sql - 在 SharePoint 2010 中指定不同的数据库服务器

php - 如何在 MYSQL 中的同一 INSERT QUERY 中的另一列中使用自动递增 Id?