2013-08-04 30 views
0

我已完成此部分以返回select行中的行位置,特定的行將返回一部分的order子句。選擇整行的行位置Togther

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

我還想將其餘的列與其位置一起返回。我認爲這是一個INNER JOIN,但我無法確定語法。

+0

不太清楚你的意思。您可以添加表格結構,示例數據和預期輸出。 –

+0

定界符$$ CREATE TABLE'1_package_group_eit'( 'id' INT(11)NOT NULL, 'rows' INT(11)DEFAULT NULL, 'sn' INT(11)DEFAULT NULL, PRIMARY KEY(' id') )ENGINE = InnoDB DEFAULT CHARSET = utf8 $$ –

+0

請添加作爲您的文章的編輯,而不是一個無法讀取的評論 – Bojangles

回答

1

就包括在子查詢中的列:

SELECT t.* 
FROM (SELECT t.*, @i:[email protected] + 1 as n 
     FROM 1_packages t cross join 
      (SELECT @i:=0) const 
     ORDER BY group_id, position, pack_description 
    ) t 
WHERE id = 10; 
0

這是正確的語法。該行返回一個額外的列,給出它的選擇位置。

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