SELECT *
FROM `cms_goods`
WHERE rank < 20
OR rank > 20
LIMIT 10
此代码仅返回 10 条排名字段小于 20 的记录。我希望查询同时显示小于和大于记录。(限 10 人)
尝试联合:
SELECT * FROM `cms_goods` WHERE
rank < 20 LIMIT 5
UNION ALL
SELECT * FROM `cms_goods` WHERE
rank > 20 LIMIT 5
您可以使用 UNION ALL
(SELECT * FROM `cms_goods` WHERE rank < 20 LIMIT 5)
UNION ALL
(SELECT * FROM `cms_goods` WHERE rank > 20 LIMIT 5)
最好的方法是通过一个可以节省几毫秒的子查询,但不幸的是 mySQL 还不支持子查询中的 LIMIT 功能。
所以你最好的选择是使用这样的联合:
SELECT * FROM `cms_goods` WHERE
rank < 20 LIMIT 5
UNION ALL
SELECT * FROM `cms_goods` WHERE
rank > 20 LIMIT 5
例如:
$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 将它们连接成一个结果。
PS:不要忘记将评论标记为答案,以有帮助的为准。
您可以使用
LIMIT 10, 20
接下来将从第 10 行和 20 行中选择
子查询可能吗?
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)