在用于缩小连接结果的GROUP CONCAT子查询中找不到表别名



我正试图创建一个查询,在一个附加列中列出每个用户和用户的transactionId。每个用户都可以有多个事务,其中user.userId=Transaction.userId。当我使用下面的查询时,我收到一个错误,它无法识别user:的别名U1

错误代码:1054。"where子句"中的未知列"U1.userId">

子查询sub1用于缩小将由GROUP_CONCT连接的结果。

也有类似的问题涉及未找到别名,但在GROUP_CONCT的子查询中没有找到别名。

SELECT
*,
(
SELECT
GROUP_CONCAT(transactionId SEPARATOR ',')
FROM (
SELECT * FROM Transaction AS T1
WHERE T1.userId = U1.userId
) as sub1
) as transactionIds
FROM
User as U1

有人知道如何达到预期的结果吗?用户行,其中包含汇总用户事务ID的附加列。

不需要子查询。

SELECT
*,
(
SELECT
GROUP_CONCAT(transactionId SEPARATOR ',')
FROM Transaction AS T1
WHERE T1.userId = U1.userId
) as transactionIds
FROM
User as U1

我包含了子查询,因为我正在寻找一种方法来限制结果,以防我不需要所有的id。

SELECT
*,
(
SELECT
SUBSTRING_INDEX(GROUP_CONCAT(transactionId ORDER BY transactionId SEPARATOR ','), ',', needed_amount)
FROM Transaction AS T1
WHERE T1.userId = U1.userId
) as transactionIds
FROM
User as U1

不要忘记将@@group_concat_max_len调整到合理但足够的值。

最新更新