0

以下 SQL 语句设置了一个用户变量 @id,然后我将在尾随子查询中使用该变量。我的问题是 @id 变量只设置为结果集中的第一个 items.id - 而不是“每行” - 所以子查询的结果对于主选择中的每一行都是相同的。有谁知道是否有办法为每一行重置@id 变量?

    select
         items.id
        ,items.title
        ,@id := items.id
        ,(
            select
                group_concat(x.y)
            from
                (
                    select
                        group_concat(ledger.stockcode) as y
                    from
                        ledger
                    where
                        @id = ledger.itemid
                    group by
                         ledger.stockcode
                    having
                        sum(ledger.stockqty) > 0
                ) as x
            ) as extras
    from
        items
    where
        items.id = 196
4

1 回答 1

0

试试这个查询

select
     a.id
    ,a.title
    ,b.y as extras
from
    items a
inner join
    (select
       group_concat(ledger.stockcode) as y
    from
       ledger
    where 
       ledger.itemid = 196
    group by
       ledger.stockcode
    having
       sum(ledger.stockqty) > 0) b
on
    a.id = 196 AND a.id = b.itemid
于 2013-04-05T05:27:32.017 回答