質問
何が最も簡単な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
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
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 1
へ TOP 2
, 3
または 4
uでの3、4、5位です。