-3

行番号に従ってクエリする方法がある場合は? お気に入り:

select rownumber from table;

私がやろうとしていること: サブクエリを使用してテーブル内の行の総数を計算しましたが、最後の行のみを表示したいと考えています。

新人の答え:

2番目に高い給料が欲しかった。これは私がやったことです:

select * from gg where salary< (select max(salary) from gg) order by salary desc limit 1

これは、N 番目に高い給与に対しては機能せず、2 番目に高い給与に対してのみ機能します。そして、私はこれに慣れていないので、自分の方法で2番目に高いものを取得したかっただけです.

4

5 に答える 5

2

特定の行番号を取得する理由はわかりませんが、次のようにすることができます。

select * from table LIMIT rownumer, 1;

詳細については、http://dev.mysql.com/doc/refman/5.0/en/select.html を参照してください

したがって、3行目が必要な場合は、次のようにします。 SELECT * FROM table LIMIT 3,1;

6 行目から 16 行目が必要な場合は、次を使用します。 SELECT * FROM table LIMIT 6,10

これは、ランダムな行を取得する場合、または SORT BY を追加する場合にのみ役立つことを理解してください。そうしないと、どの行が返されるかわかりません...

于 2012-10-09T10:29:47.873 に答える
1

行番号のあるレコードを選択する場合は、次を参照してください。

SELECT (@rank := @rank + 1) AS row_number
        ,contract_id, price1, price2, price3
      FROM t1, (SELECT @rank := 0) tmp;

行番号のみが必要な場合は、次を参照してください。

SELECT (@rank := @rank + 1) AS row_number
      FROM t1, (SELECT @rank := 0) tmp

このSQLFiddleを参照してください

于 2012-10-09T10:34:50.420 に答える
1

特定の数の行のみを返すようにクエリを制限したい場合は、Mysql 組み込みLIMIT row_count OFFSET offset句を使用できます。ただし、行番号のようなランキング番号を選択する場合は、次を使用します。

SET @rownum = 0; 
Select *
FROM
(
   Select *,  (@rownum := @rownum+1) as rank
   FROM t
) sub 

更新:必要に応じて

最後のものだけを表示したい。

次に、次のようにします。

  SELECT *
  FROM Yourquery
  ORDER BY SomeField DESC --This how you determine the last one based on the order
  LIMIT 1;
于 2012-10-09T10:30:11.530 に答える
0

順序付けなしの行番号はありませんが、並べ替え順序を念頭に置いている場合は、

SELECT * FROM thing ORDER BY ordering LIMIT 1 OFFSET your_row;
于 2012-10-09T10:31:58.607 に答える
0
select * from table limit [offset,limit]

オフセットは、開始する行番号です。

limitは、オフセットから開始する行数です。

だからあなたはそれを次のように使うことができます

select * from table limit rownumber,1
于 2012-10-09T10:31:50.157 に答える