gpt4 book ai didi

Mysql 查询 UNION 和 ORDER 不起作用

转载 作者:行者123 更新时间:2023-11-29 11:42:10 25 4
gpt4 key购买 nike

我的 sql 查询有问题。

此代码适用于具有发布日期的展示文章。

示例:

BLOG ONE: day of pubblication every 16th of mounth
BLOG TWO: day of pubblication every 2nd of mounth
BLOG THREE: day of pubblication every 23th of mounth

所以今天 24 号我必须看到发布日期为 24,25,26,27,28,1,2,3,4,5 的博客.......

问题是合并两个查询

( DAY FROM TODAY TO 31th) + (DAY FROM 1st TO YESTERDAY)

这是第一个查询

$queryallblog = mysql_query("
(
SELECT *
FROM day,blog
WHERE day.autore = blog.titolo && day.titolo >= DAY(CURRENT_DATE())
ORDER BY day.titolo
)") or die(" Error: (" . mysql_errno() . ") " . mysql_error());

这是第二个:

$queryallblog = mysql_query("
(
SELECT *
FROM day,blog
WHERE day.autore = blog.titolo && day.titolo < DAY(CURRENT_DATE())
ORDER BY day.titolo
)") or die(" Error: (" . mysql_errno() . ") " . mysql_error());

使用 UNION 声明时,全局顺序不正确

最佳答案

如果我正确理解你的问题,你的问题不是关于 UNION 查询,而是关于正确排序结果。我会使用这样的查询:

SELECT
*
FROM
day inner join blog on day.autore = blog.titolo
ORDER BY
case when day.titolo >= DAY(CURRENT_DATE()) then 1 else 2 end,
day.titolo
  • 我使用内部联接而不是 where 语法
  • case when 当 day.titolo >= 当前日期时返回 1,否则返回 2。首先将返回当天之后的行,然后返回当天之前的行
  • 然后我按天对行进行排序。titolo
  • 您可能需要添加其他过滤器,例如月份

您可以使用 UNION ALL 查询获得类似的结果,但您必须添加额外的列:

SELECT 1 as t, *
FROM day inner join blog on day.autore = blog.titolo
WHERE day.titolo >= DAY(CURRENT_DATE())
UNION ALL
SELECT 2 as t, *
FROM day inner join blog on day.autore = blog.titolo
WHERE day.titolo < DAY(CURRENT_DATE())
ORDER BY t, day.titolo

但是我不会推荐它,至少在这种情况下不会。

关于Mysql 查询 UNION 和 ORDER 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599565/

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