[英]Mysql query UNION with ORDER don't work
我的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
您可以通过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
但是,我至少在这种情况下不建议这样做。
(SELECT *
FROM day,blog
WHERE day.autore = blog.titolo && day.titolo >= DAY(CURRENT_DATE())
ORDER BY day.titolo)
UNION ALL
(SELECT *
FROM day,blog
WHERE day.autore = blog.titolo && day.titolo < DAY(CURRENT_DATE())
ORDER BY day.titolo)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.