【发布时间】:2015-01-30 09:42:50
【问题描述】:
我已经仔细阅读了这个: How to use ORDER BY inside UNION
尽管如此,ORDER BY 子句不适用于这个复杂的查询:
SELECT *, 'tbl' as src FROM
(
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 != '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 != '999'
AND (name6 REGEXP 'Shabla|Kaliakra|Varna' )
GROUP BY name3
UNION
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 != '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 = '999'
AND (name3 REGEXP 'Shabla|Kaliakra|Varna')
GROUP BY name3
UNION
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 = '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 != '999'
AND (name6 REGEXP 'Shabla|Kaliakra|Varna')
GROUP BY name6
) tbl
UNION
SELECT *, 'tbl' as src FROM
(
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 != '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 != '999'
AND (name6 REGEXP 'N.selo|Vidin|Vratca') GROUP BY name3
UNION
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 != '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 = '999'
AND (name3 REGEXP 'N.selo|Vidin|Vratca')
GROUP BY name6
UNION
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 = '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 != '999'
AND (name6 REGEXP 'N.selo|Vidin|Vratca')
GROUP BY name6
) tbl
ORDER BY FIELD (src, 'Shabla|Kaliakra|Varna|N.selo|Vidin|Vratca')
这两个表几乎相同,有 7 列 - id、month、date、time、m_d_t、name3、prec3 或 name6、prec6第二张桌子。我不明白如何以查询末尾描述的方式订购结果?
提前谢谢你!
【问题讨论】:
标签: mysql