2017-04-30 7 views
0

MYSQLクエリで他の選択肢からどのように選択できますか?私はそれが最初の行、第二列または三1MYSQLクエリで他の選択肢からどのように選択できますか?

だ場合、誰もが私を助けることができますしてくださいID = 6のレコードの数を知りたいこの

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 

よう 何か。

+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のレコード数を知りたい" **クリア** "最初の行、2行目、3番目のレコードの場合" **不明** ** – 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。 。 。それは最初のクエリとはまったく関連がありません。これは、1つの行を戻す集約照会です。 –

+0

ああ、はい、あなたは絶対に正しいです。私の悪い。 – rickdenhaan

関連する問題