2017-04-30 111 views
0

如何從其他選擇MYSQL查詢中選擇? 像這樣如何從MYSQL查詢中選擇其他選項?

SET @row_number = 0; 

SELECT a.num FROM 

(SELECT 
    (@row_number:[email protected]_number + 1) AS num, id 
FROM 
    main) as a where a.id=6 

我想知道記錄的編號其中id = 6如果這是第一排,第二排或者第三個

請任何人能幫助我。

+2

請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+0

「我想知道id = 6的記錄數」** clear **「如果是第一行,第二行或第三個」**不清楚** – nogad

回答

1

如果您的查詢具有過濾器where a.id = 6,那麼id = 6的行將始終是結果集的第一行。

我解釋你的問題的意思是:「如果我按id升序排序,那麼id = 6的行的行號將會打開」。如果是這樣,你可以用一個簡單的彙總:

SELECT COUNT(*) 
FROM main m 
WHERE m.id <= 6; 

您的查詢似乎通過枚舉所有行的啓發。你能做到這一點的版本,以及:

select m.* 
from (select m.*, (@rn := @rn + 1) as rn 
     from main m cross join 
      (select @rn := 0) params 
     order by id 
    ) m 
where id = 6; 

第一個版本應該是更有效,特別是對id的索引。

+0

我想添加'ORDER BY m .id ASC',爲了安全起見。 – rickdenhaan

+0

@ rickdenhaan。 。 。這在第一個查詢中完全不相關。這是一個返回一行的聚合查詢。 –

+0

啊,是的,你說得對。我的錯。 – rickdenhaan