我们希望拥有第二大元素.我们首先使用ANY来排除最大的一个.然后我们用all来选择最大的.但是,当我们运行此查询时,它会显示最大而不是第二个查询.为什么?
SELECT *
FROM bestelling
WHERE totaalprijs > ALL
(
SELECT totaalprijs
FROM bestelling
WHERE totaalprijs < ANY
(
SELECT totaalprijs
FROM bestelling
)
)
Run Code Online (Sandbox Code Playgroud)
表中的元素:
157.00
5.00
82.80
15.00
20.00
20.00
Run Code Online (Sandbox Code Playgroud)
怎么样
select *
from bestselling
where totaalprijs < (select max(totaalprijs) from bestselling)
order by totaalprijs desc
limit 1;
Run Code Online (Sandbox Code Playgroud)
问题是最外层查询中的">".如果你用语言打破这个,从内到外,你说:
如果您只想要第二大值,可以用MAX语句替换该外部子句:
SELECT max(totaalprijs)
FROM
(
SELECT totaalprijs
FROM bestelling
WHERE totaalprijs < ANY
(
SELECT totaalprijs
FROM bestelling
)
) M
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要所有带有"第二大"值的记录,您可以使用:
SELECT * FROM bestelling
WHERE totaalprijs =
(
SELECT max(totaalprijs)
FROM bestelling
WHERE totaalprijs < ANY
(
SELECT totaalprijs
FROM bestelling
)
)
Run Code Online (Sandbox Code Playgroud)