选择查询相似排名

时间:2013-03-04 18:32:29

标签: php mysql

SELECT *
FROM `cms_goods`
WHERE rank < 20
     OR rank > 20
LIMIT 10

此代码仅返回10个排名字段小于20的记录。我希望查询显示小于和大于记录。 (限10)

5 个答案:

答案 0 :(得分:5)

尝试结合:

SELECT * FROM `cms_goods` WHERE 
rank < 20 LIMIT 5
UNION ALL
SELECT * FROM `cms_goods` WHERE 
rank > 20 LIMIT 5

答案 1 :(得分:5)

您可以使用UNION ALL

(SELECT * FROM `cms_goods` WHERE rank < 20 LIMIT 5)
UNION ALL 
(SELECT * FROM `cms_goods` WHERE rank > 20 LIMIT 5)

答案 2 :(得分:2)

最好的方法是通过一个可以节省几毫秒的子查询,但不幸的是mySQL在子查询中还不支持LIMIT功能。

所以你最好选择使用这样的联盟:

SELECT * FROM `cms_goods` WHERE 
rank < 20 LIMIT 5
UNION ALL
SELECT * FROM `cms_goods` WHERE 
rank > 20 LIMIT 5

e.g:

$query = mysq_query("SELECT * FROM `cms_goods` WHERE rank < 20 LIMIT 5 UNION ALL SELECT * FROM `cms_goods` WHERE rank > 20 LIMIT 5");

说明: 第一个查询将获得5个最佳结果 最后一个查询将得到底部5个结果 而且UNION ALL将在一个结果中加入他们。

P.S:不要忘记将评论标记为答案,无论哪个有帮助。

答案 3 :(得分:0)

您可以使用

LIMIT 10, 20

它将从第10行和第20行选择

答案 4 :(得分:0)

子查询可能吗?

SELECT * FROM cms_goods WHERE id IN (SELECT id FROM cms_goods WHERE rank < 20 LIMIT 10) OR id IN (SELECT id FROM cms_goods where rank > 20 LIMIT 10)