SELECT *
FROM `cms_goods`
WHERE rank < 20
OR rank > 20
LIMIT 10
此代码仅返回10个排名字段小于20的记录。我希望查询显示小于和大于记录。 (限10)
答案 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)