从表中获取一定数量的数据库条目

时间:2011-02-23 12:04:19

标签: mysql database sqlite

有没有办法从数据库示例中获取确切数量的条目。例如,假设您有一个表只有一个id和列的总访问量。假设您想要准确抓取20个条目并按总访问次数对其进行排序。你会怎么做?我知道如何对整个表格进行排序,但希望能够抓住前20个总访问量然后对它们进行排序。感谢

O现在我正在使用sqlite,但我知道将来我也将使用mysql。感谢

5 个答案:

答案 0 :(得分:0)

使用限制获得前20名,

如果您想添加其他类别,请在访问列

后添加

喜欢:

SELECT * FROM mytable ORDER BY visits DESC 

/*here put another order by field like date */
, date

LIMIT 20

答案 1 :(得分:0)

使用ORDER - LIMIT子句

SELECT * FROM table ORDER BY field [ASC|DESC] LIMIT 20 OFFSET [offset value]

答案 2 :(得分:0)

尝试:

SELECT * FROM TableName ORDER BY TotalVisits LIMIT 20

答案 3 :(得分:0)

您需要使用LIMIT,但如果您打算根据不同的标准对前20个进行重新排序,则需要将整个事物放在子查询中。所以

SELECT * from <table> order by <total visits column> LIMIT 20

会让你获得前20名,但随后在该结果中排序你会做类似

的事情
SELECT * from 
  (SELECT * from <table> ORDER BY <total visits column> LIMIT 20) 
  ORDER BY <other criteria>

答案 4 :(得分:0)

LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量,但有以下例外:

使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0(不是1):

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

要从特定偏移量检索所有行直到结果集的末尾,可以使用一些大数字作为第二个参数。此语句检索从第96行到最后一行的所有行:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

使用一个参数,该值指定从结果集开头返回的行数:

SELECT * FROM tbl LIMIT 5;     # Retrieve first 5 rows

换句话说,LIMIT row_count相当于LIMIT 0,row_count。

全部开启:http://dev.mysql.com/doc/refman/5.5/en/select.html更好地探索mysql,但sqlite的工作方式相同:http://www.sqlite.org/lang_select.html