我需要2個查詢的聯合,但結果必須在一個特定的順序:如何對UNION的不同部分使用不同順序的UNION查詢的輸出進行排序?
1個查詢- 首先必須是結果,按名稱排序。
- 其他結果必須來自2個查詢並按日期排序。
我寫此查詢:
SELECT * FROM (
(SELECT c.category_id as media_id,
null as media_users_id,
c2l.category_name as media_title,
null as media_duration,
null as media_upload_timestamp,
null as media_key,
null as media_conversion_info,
null as media_type,
null as media_views,
null as media_embed_views,
null as media_comments_count,
null as media_accept_ratings,
null as media_accept_comments,
NOW() as media_upload_date,
null as media_ratings_sum,
null as media_ratings_count,
null as categories2media_category_id,
null as categories2media_media_id,
1 as type
FROM ost_categories c
LEFT JOIN ost_categories2language c2l
ON c2l.category_id = c.category_id
WHERE c2l.category_language = 'russian' AND c.category_parent_id = '60' AND c.is_group = '1'
ORDER BY media_title)
UNION
(SELECT
m.media_id,
m.media_users_id,
m.media_title,
m.media_duration,
UNIX_TIMESTAMP(m.media_upload_date) media_upload_timestamp,
m.media_key,
m.media_conversion_info,
m.media_type,
m.media_views,
m.media_embed_views,
m.media_comments_count,
m.media_accept_ratings,
m.media_accept_comments,
m.media_upload_date,
m.media_ratings_sum,
m.media_ratings_count,
c2m.categories2media_category_id,
c2m.categories2media_media_id,
0 as type
FROM ost_media m,
ost_categories2media c2m
WHERE c2m.categories2media_category_id = '60'
AND c2m.categories2media_media_id = m.media_id
AND m.media_type = 'video'
AND (m.media_access='public' OR (m.media_access='private' AND m.media_users_id=2))
AND m.media_conversion_status = 'success'
AND m.media_notified_status = 'legal' ORDER BY m.media_upload_date DESC)
) t LIMIT 0,28
但順序是錯誤的。我如何解決這個問題?
建議:你可以省略你的問題中選擇的列名稱的很多(說10或更多),這會讓你的問題更加緊湊和易於理解。你可以留下評論' - 和其他值'或類似的東西,以表明完整的查詢更復雜。這樣做可能會讓您的整個查詢在沒有滾動條的問題中可見 - 這通常是可取的。 –