如何從其他選擇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如果這是第一排,第二排或者第三個
請任何人能幫助我。
如何從其他選擇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如果這是第一排,第二排或者第三個
請任何人能幫助我。
如果您的查詢具有過濾器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
的索引。
我想添加'ORDER BY m .id ASC',爲了安全起見。 – rickdenhaan
@ rickdenhaan。 。 。這在第一個查詢中完全不相關。這是一個返回一行的聚合查詢。 –
啊,是的,你說得對。我的錯。 – rickdenhaan
請參閱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
「我想知道id = 6的記錄數」** clear **「如果是第一行,第二行或第三個」**不清楚** – nogad