需要一些帮助来理解为什么我的 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/