質問

何が最も簡単なSQLクエリーの二番目に大きい整数値には特定のカラム?

あっ複製値のカラムです。

役に立ちましたか?

解決

SELECT MAX( col )
  FROM table
 WHERE col < ( SELECT MAX( col )
                 FROM table )

他のヒント

SELECT MAX(col) FROM table WHERE col NOT IN (SELECT MAX(col) FROM table);

T-Sql方法が二つあります:

--filter out the max
select max( col )
from [table]
where col < ( 
    select max( col )
    from [table] )

--sort top two then bottom one
select top 1 col 
from (
    select top 2 col 
    from [table]
    order by col) topTwo
order by col desc 

マイクロソフトマイクロソフトSQLの最初の方法は、充実したものになって第二の場合でも列がペアをクラスタリングしました。

これは、並べ替え操作が比較的遅くにテーブルやインデックススキャンを max 集ます。

或いは、マイクロソフトマイクロソフトSQL2005年以上で利用できます ROW_NUMBER() 機能:

select col
from (
    select ROW_NUMBER() over (order by col asc) as 'rowNum', col
    from [table] ) withRowNum 
where rowNum = 2

私は両方の一部のSQLサーバーの特定および一部のMySQLソリューションでにここにいるのか、それを明らかにデータベースあります。がばいいでしょうSQLサーバーからこのは自明であるが、イナリを使用しています。

私も一部のソリューションなのでなる可能性を考慮すための重複るので注意を要するものです。最後に、少しで動作するものとなるように完全スキャニングを行います。したいかどうかを確認するために第2回スキャンのみを見る2値です。

SQLサーバー(2012年度):

SELECT MIN([column]) AS [column]
FROM (
    SELECT TOP 2 [column] 
    FROM [Table] 
    GROUP BY [column] 
    ORDER BY [column] DESC
) a

MySQL:

SELECT `column` 
FROM `table` 
GROUP BY `column` 
ORDER BY `column` DESC 
LIMIT 1,1

更新:

SQL Server2012に対応しまいクリーナー(および 標準)オフセット/フェッチ構文:

SELECT TOP 2 [column] 
FROM [Table] 
GROUP BY [column] 
ORDER BY [column] DESC
OFFSET 1 ROWS
FETCH NEXT 1 ROWS ONLY;

思いつものように:

SELECT * FROM Table ORDER BY NumericalColumn DESC LIMIT 1 OFFSET 1

または

SELECT * FROM Table ORDER BY NumericalColumn DESC LIMIT (1, 1)

によってデータベースサーバーです。ヒント:SQLサーバーがない限とします。

きの二番目に大きい値カラムを用い、以下のクエリ

SELECT *
FROM TableName a
WHERE
  2 = (SELECT count(DISTINCT(b.ColumnName))
       FROM TableName b WHERE
       a.ColumnName <= b.ColumnName);

のもので詳細は、下記のリンク

http://www.abhishekbpatel.com/2012/12/how-to-get-nth-maximum-and-minimun.html

最も簡単ないかの値からこの結果セットの申し込み:

SELECT DISTINCT value FROM Table ORDER BY value DESC LIMIT 2

がなければならな選択の値をSQLかについて

SELECT MIN(value) FROM (SELECT DISTINCT value FROM Table ORDER BY value DESC LIMIT 2) AS t

非常に単純なクエリの二番目に大きい値

SELECT `Column` FROM `Table` ORDER BY `Column` DESC LIMIT 1,1;
SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )

このクエリは最大で給与の結果を含む最大で給与の全体ます。

とを義務付けられているかが私にとってより良いexecプラン:

 SELECT TOP 1 LEAD(MAX (column)) OVER (ORDER BY column desc)
 FROM TABLE 
 GROUP BY column

select * from (select ROW_NUMBER() over (Order by Col_x desc) as Row, Col_1
    from table_1)as table_new tn inner join table_1 t1
    on tn.col_1 = t1.col_1
where row = 2

これに値を取得します当行.....

も単純な

select sal from salary order by sal desc limit 1 offset 1

これは非常に簡単なコードをお試しいただくことが可能です:-

ex:テーブル名=試験

salary 

1000
1500
1450
7500

指定のコードを取得で2番目に大きい値

select salary from test order by salary desc offset 1 rows fetch next 1 rows only;

ここでオフセット1列と2列のテーブル'ッ次の1行だけではないことを定めている1。ばん"を取得次の1行だけを一覧で表示し、それからの行の行った。

select min(sal) from emp where sal in 
    (select TOP 2 (sal) from emp order by sal desc)

注意

salは列名
電磁ポンプはテーブル名

Tomよう、この失敗がある場合は、複数の値を返却 select max([COLUMN_NAME]) from [TABLE_NAME] ます。すなわちが2つ以上の値のデータセットです。

若干の変更を検索する作業-

select max([COLUMN_NAME]) from [TABLE_NAME] where [COLUMN_NAME] **IN** 
  ( select max([COLUMN_NAME]) from [TABLE_NAME] )
select max(COL_NAME) from TABLE_NAME where COL_NAME in 
    (select COL_NAME from TABLE_NAME where COL_NAME < (select max(COL_NAME) from TABLE_NAME));

サブクエリを返します全ての値以外に最大です。選択の最大値から返されます。

select col_name
from (
    select dense_rank() over (order by col_name desc) as 'rank', col_name
    from table_name ) withrank 
where rank = 2
SELECT 
    * 
FROM 
    table 
WHERE 
    column < (SELECT max(columnq) FROM table) 
ORDER BY 
    column DESC LIMIT 1

最もesiest方法:

SELECT
      Column name
FROM
      Table name 
ORDER BY 
      Column name DESC
LIMIT 1,1
select age from student group by id having age<(select max(age) from student)order by age limit 1

また複製値です。この場合に使用 異なるグループ すぐ二番目に高い値

こちらはテーブル

給与

:

enter image description here

グループ

SELECT  amount FROM  salary 
GROUP by amount
ORDER BY  amount DESC 
LIMIT 1 , 1

異なる

SELECT DISTINCT amount
FROM  salary 
ORDER BY  amount DESC 
LIMIT 1 , 1

最初の部分は限値=デ

第二部分の制限=数値

SELECT MAX(sal) FROM emp
WHERE sal NOT IN (SELECT top 3 sal FROM emp order by sal desc )

この戻りますのsalのempテーブル

指定し

SELECT  *
  FROM [Users]
    order by UserId desc OFFSET 1 ROW 
FETCH NEXT 1 ROW ONLY;

MySQL

SELECT  *
  FROM Users
    order by UserId desc LIMIT 1 OFFSET 1

必要なサブクエリ...だけスキップ実行を選択し次の行の後順降順

のようなものか。まだ試しきもの

select top 1 x
from (
  select top 2 distinct x 
  from y 
  order by x desc
) z
order by x

選択方法n番目の列のSQLデータベースのテーブルは?.

Sybase SQLでもどこでも支持

SELECT TOP 1 START AT 2 value from table ORDER BY value

を使用し相関索:

Select * from x x1 where 1 = (select count(*) from x where x1.a < a)
select * from emp e where 3>=(select count(distinct salary)
    from emp where s.salary<=salary)

このクエリを選択し、最大限の三闘しております。の場合は電磁ポンプと同じ給与はこの影響はありません返します。

select top 1 MyIntColumn from MyTable
where
 MyIntColumn <> (select top 1 MyIntColumn from MyTable order by MyIntColumn desc)
order by MyIntColumn desc

この作品は、MS SQL:

select max([COLUMN_NAME]) from [TABLE_NAME] where [COLUMN_NAME] < 
 ( select max([COLUMN_NAME]) from [TABLE_NAME] )

クエの2ndアーも多数行

select Top 1 (salary) from XYZ
where Salary not in (select distinct TOP 1(salary) from XYZ order by Salary desc)
ORDER BY Salary DESC

変更点 Top 1TOP 2, 3 または 4 uでの3、4、5位です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top