gpt4 book ai didi

mysql - 我们可以在 mysql 中执行一个按日期排序的选择查询,并在查询底部添加任何过期当前日期的内容吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:43 25 4
gpt4 key购买 nike

我有一个简单的表格示例:

表名 SHOW,包含 3 列(id、title、representationDate)。

我想选择所有节目并将其按日期顺序放置 distinct title 因为我可以有相同的 title 但在不同的 representationDate。我还希望,当我执行选择查询时,所有过期显示都在我的列表底部,所有过期都显示在顶部,按 representationDate 的顺序显示。

现在我尝试这个,但没有给我想要的结果。

SELECT distinct title as title
FROM SHOW
WHERE id = 23
AND representationDate > NOW()
UNION
(SELECT distinct title as title
FROM SHOW
WHERE id = 23
AND representationDate < NOW()
ORDER BY representationDate ASC)

最佳答案

您显然遇到过的问题是,您可以使用联合对任何特定的带括号的 SELECT 语句进行排序,但是在对单个 SELECT 的结果执行 UNION 时,无法保证顺序,因此您可能会得到交错的结果。您可以对整个 UNIONed 结果集进行排序(末尾的括号外),但这不会让您得到您正在寻找的结果,因为这不允许您区分过期记录和未过期记录。

您可能想要做的是生成一个可以排序的计算字段:

SELECT
distinct title,
(CASE when representationDate >= NOW() THEN 1 ELSE 0 END CASE) as `current`
FROM SHOW
WHERE id = 23
ORDER BY `current` DESC, representationDate ASC

关于mysql - 我们可以在 mysql 中执行一个按日期排序的选择查询,并在查询底部添加任何过期当前日期的内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20983732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com