我有一个包含9行的表格。
$ ID = 5
如果我使用SELECT * FROM tbl WHERE id>=$id
我得到5,6,7,8,9行。对于这个查询,我想添加SELECT * FROM tbl WHERE id<$id
的结果,这样我就会得到最后的5,6,7,8,9,1,2,3,4行。
这是为了避免在数据库中进行两次,然后在php中添加结果集。
编辑:是的命令很重要。谢谢你们的快速反应。谢谢@knittl(接受的答案)和@Swanand的最佳答案。答案 0 :(得分:6)
你想要所有的行吗?如果订单是您要查找的,请对结果集进行排序:
SELECT * FROM tbl
ORDER BY id >= $id DESC, id ASC
答案 1 :(得分:1)
尝试这样的事情......
SELECT *, (IF(id<5, true,false)) AS ltfive
FROM mytable
ORDER BY ltfive, id
答案 2 :(得分:-1)
UNION是你的朋友!
(SELECT *,1 as q FROM tbl WHERE id>=$id)
UNION
(SELECT *,2 as q FROM tbl WHERE id<$id)
ORDER BY q, id;
答案 3 :(得分:-1)
试
$id=5;
SELECT * FROM tbl WHERE id>=$id
union
SELECT * FROM tbl WHERE id<$id ;