从tbl中选择*,其中id> = 5 / *然后将结果从id< 5添加到查询* /

时间:2010-10-01 12:07:50

标签: sql mysql

我有一个包含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的最佳答案。

4 个答案:

答案 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 ;