如果我理解正確的,假定你總是希望在設定的最早日期按升序排序,你可以這樣做:
ORDER BY LEAST(albums.date, videos.date, stories.date)
「最小」是Oracle的函數,返回最小(即最早的)值。雖然我不知道這是你想要什麼或者
ORDER BY CASE
WHEN albums.date <= videos.date AND albums.date <= stories.date THEN albums.date
WHEN videos.date <= albums.date AND videos.date <= stories.date THEN videos.date
ELSE stories.date
:如果你是一個數據庫上沒有simliar命令你可以使用一個CASE語句。你將在一行中擁有大量的專輯,視頻和故事信息。如果你想要爲每個不同的專輯,視頻或故事添加一行,那麼你可能需要一個UNION而不是一組JOIN,但是你必須確保使用相同的字段。例如,如果你在,你想看到每個表中的標題字段,你可以使用:
SELECT * FROM (
SELECT 'Album' as RowType, album_title as title, subject_id, date from albums
UNION
SELECT 'Video' as RowType, video_title as title, subject_id, date from videos
UNION
SELECT 'Story' as RowType, story_title as title, subject_id, date from stories
)
ORDER BY subject_id, date
這將使排序順序,我相信你想(或者你可以把subject_id出的順序BY如果你喜歡)。關於UNION唯一的事情是你必須在每個基礎查詢中返回相同的列,所以如果你想從專輯獲得與來自視頻相比完全不同的信息,它將變得棘手。
所以最新的問題與您的查詢? –
它不會按預期順序排列它們... –
如果您可以獲得樣本結果 –