php + mysql,按名称排序+从特定 ID 开始

发布于 2024-09-25 03:10:01 字数 304 浏览 0 评论 0原文

MySQL:

id | name  |
------------
1  | Joe   |
2  | Craig |
3  | Shawn |
4  | Ryan  |
5  | Seth  |

PHP:

$a = mysql_query("SELECT * FROM table_name ORDER BY name DESC");

我想做的是,我想从id:3开始,所以它应该输出:

3,4,5,1,2

MySQL:

id | name  |
------------
1  | Joe   |
2  | Craig |
3  | Shawn |
4  | Ryan  |
5  | Seth  |

PHP:

$a = mysql_query("SELECT * FROM table_name ORDER BY name DESC");

what I want to do though is, I want to start at id: 3, so it should output:

3,4,5,1,2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

客…行舟 2024-10-02 03:10:01

您可以在 ORDER BY 中使用表达式:

SELECT id, name
FROM table_name
ORDER BY id < 3, id

结果:

3  Shawn
4  Ryan
5  Seth
1  Joe
2  Craig

我还建议您不要使用 SELECT * 而是显式列出列。

You can use an expression in the ORDER BY:

SELECT id, name
FROM table_name
ORDER BY id < 3, id

Result:

3  Shawn
4  Ryan
5  Seth
1  Joe
2  Craig

I'd also advise you not to use SELECT * and instead to list the columns explicitly.

战皆罪 2024-10-02 03:10:01

编辑:标记是正确的。先前的查询在语法上是错误的。
使用虚拟别名应该可以!

Select id from
(
    SELECT id FROM table_name 
    WHERE id >= 3 
    ORDER BY id ASC
) X   

UNION

Select * from
(
    SELECT id FROM table_name 
    WHERE id < 3 
    ORDER BY id ASC
) Y

这应该给你 3,4,5,1,2

EDIT : Mark is correct. The earlier query was syntactically incorrect.
Using dummy aliasés should work!

Select id from
(
    SELECT id FROM table_name 
    WHERE id >= 3 
    ORDER BY id ASC
) X   

UNION

Select * from
(
    SELECT id FROM table_name 
    WHERE id < 3 
    ORDER BY id ASC
) Y

This should give you 3,4,5,1,2

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文