0

我已经完成了这部分以返回特定行将在 order 子句的一部分中返回的 select 中的行位置。

SELECT 
    *
FROM
    (SELECT 
        @i:=@i + 1 n, id
    FROM
        1_packages, (SELECT @i:=0) q
    ORDER BY group_id , position , pack_description) j
WHERE
    id = 10;

我还想将其余列连同其位置一起返回。我认为这是一个 INNER JOIN 但我不知道语法。

4

2 回答 2

1

只需在子查询中包含列:

SELECT t.*
FROM (SELECT t.*, @i:=@i + 1 as n
      FROM 1_packages t cross join
           (SELECT @i:=0) const
      ORDER BY group_id, position, pack_description
    ) t
WHERE id = 10;
于 2013-08-04T15:32:25.343 回答
0

这是正确的语法。该行返回一个额外的列,给出它的选择位置。

SELECT 
    *
FROM
    (SELECT 
         *, @i:=@i + 1 n
    FROM
        1_packages, (SELECT @i:=0) q
    ORDER BY group_id , position , pack_description) j
WHERE
    id = 10;
于 2013-08-04T15:40:17.903 回答