我正在尝试创建一个查询,在附加列中列出每个用户和用户的事务 ID。 每个用户可以有多个事务,其中 User.userId = Transaction.userId。当我使用下面的查询时,我收到一个错误,它无法识别用户的别名 U1:
错误代码:1054。“where 子句”中的未知列“U1.userId”
子查询 sub1 用于缩小将由 GROUP_CONCAT 连接的结果。
在 GROUP_CONCAT 的子子查询中,有一些类似的问题涵盖了未找到的别名,但没有一个。
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。
答案 0 :(得分:1)
不需要子查询。
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
调整为合理但足够的值。