2 来自同一个表的 SQL 查询

发布于 2024-09-10 20:22:11 字数 126 浏览 6 评论 0原文

我希望从表中获取第一行(按 date 降序排列),然后获取其余行(按 last_name 升序排列)。我假设我需要为此使用 UNION 语句,但我无法让它工作。

提前致谢

I am looking to grab the first row (ordered by date descending) from a table, and then grab the rest of the rows (ordered by last_name ascending). I'm assuming I need to use a UNION statement for this, but I'm having trouble getting it to work.

Thanks in advance

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

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

发布评论

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

评论(3

一身骄傲 2024-09-17 20:22:11
SELECT *
FROM yourtable
ORDER BY
    id = (SELECT id FROM yourtable ORDER BY date DESC LIMIT 1) DESC,
    last_name
SELECT *
FROM yourtable
ORDER BY
    id = (SELECT id FROM yourtable ORDER BY date DESC LIMIT 1) DESC,
    last_name
秋日私语 2024-09-17 20:22:11

为什么不运行两个查询?这似乎是一个显而易见的答案。

并非每个任务都需要在单个查询中完成。您是否也将所有 PHP 代码写在一条语句中? ;-)

Why not run two queries? That seems like one obvious answer.

Not every task needs to be done in a single query. Do you write all your PHP code in one statement as well? ;-)

零時差 2024-09-17 20:22:11

假设使用 MySQL,您可以使用:

 (SELECT t.*
    FROM TABLE t
ORDER BY t.date DESC
   LIMIT 1)
UNION 
 (SELECT t.*
    FROM TABLE t
ORDER BY t.last_name)

您需要将语句封装在括号中以应用 ORDER BY - 否则,ORDER BY 将应用于 UNION 之后的结果集。

Assuming using MySQL, you could use:

 (SELECT t.*
    FROM TABLE t
ORDER BY t.date DESC
   LIMIT 1)
UNION 
 (SELECT t.*
    FROM TABLE t
ORDER BY t.last_name)

You need to encapsulate the statements in brackets to apply the ORDER BY - otherwise, ORDER BY is applied to the resultset after the UNION.

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