有没有办法从数据库示例中获取确切数量的条目。例如,假设您有一个表只有一个id和列的总访问量。假设您想要准确抓取20个条目并按总访问次数对其进行排序。你会怎么做?我知道如何对整个表格进行排序,但希望能够抓住前20个总访问量然后对它们进行排序。感谢
O现在我正在使用sqlite,但我知道将来我也将使用mysql。感谢
答案 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