2010-06-25 46 views
2

嗨只是一个简单的问题
我知道如何从一个表简单的MySQL问题 - MAX(field)?

SELECT MAX(field) FROM table 

得到最经常性领域,但如何从表中获取的第二个最经常性领域?

谢谢。

+0

等待一段时间...但如果该字段是INT,MAX(字段)将捕获较高的数字或找到最多? – 2010-06-25 09:02:26

+0

'MAX()'找到最高的数字(即最大值)。 – 2010-06-25 09:04:30

+0

有一个函数可以让最容易找到的东西? – 2010-06-25 09:20:32

回答

0
SELECT 
    field, 
    COUNT(*) as cnt 
FROM table 
GROUP BY field 
ORDER BY cnt DESC 
LIMIT 1, 1 
+0

这是正确的! – 2010-06-25 09:26:11

5

您可以使用LIMIT来设置偏移量。

SELECT field FROM table ORDER BY field DESC LIMIT 1,1; 
+0

谢谢。这就说得通了。我会在一秒之内尝试! – 2010-06-25 08:05:25

1

定义(from about.com):限制是用来限制你的MySQL查询结果那些落在指定的范围内。您可以使用它显示第一个X数量的结果,或显示X - Y结果的范围。它表示为极限X,Y,并包含在查询结尾。 X是起点(记住第一条记录是0),Y是持续时间(显示多少条记录)。 也称为:范围导致 实例:

SELECT * FROM `your_table` LIMIT 0, 10 

将显示从数据库中的第10个结果。

SELECT * FROM `your_table` LIMIT 5, 5 

将显示记录6,7,8,9,和10

SELECT * FROM `your_table` ORDER BY 'FIELD' DESC LIMIT 1, 1 

将显示第二个最经常记录

+0

当在正确的领域订购 – Veger 2010-06-25 08:16:00

+0

谢谢你的解释! – 2010-06-25 08:18:05

2

如果性能是对你至关重要的,这可以帮助避免排序:

SET @a := (SELECT MAX(field) FROM table); 
SELECT MAX(field) FROM table WHERE field != @a; 

作为替代方法,您可以在代码中存储@a值。

+0

太棒了! 我不知道那个@syntax。 只是另一个小问题,但如果该字段是INT。 MAX()函数会追上较高的数字或最先发现的数字? 谢谢你Vitalii – 2010-06-25 09:00:10

+0

谢谢你Vitalii! – 2010-06-25 09:30:07