2013-07-05 43 views
0

我明白如何選擇隨機行並按特定列排序,但我的問題是我需要按不同表中的列對行進行排序。選擇隨機行,然後從不同的表中按列排序

例子:

SELECT * 
FROM (
    SELECT event_id, data_id 
    FROM events 
    WHERE category_id=1 
    ORDER BY RAND() 
    LIMIT 5) c 
ORDER BY creation_date; 

所以這個查詢將正常工作,如果是CREATION_DATE事件表中,但CREATION_DATE是在一個名爲「數據」表。因此events表中的data_id是creation_date所在的數據表的外鍵。

我的目標是從事件表中選擇5個RANDOM行,然後按照數據表中的creation_date對它們進行排序。

任何幫助表示讚賞。

回答

2
SELECT * 
FROM (
    SELECT 
    event_id, 
    data_id 
    FROM 
    events 
    WHERE 
    category_id = 1 
    ORDER BY RAND() 
    LIMIT 5) c 
    INNER JOIN data d ON d.data_id = c.data_id 
ORDER BY 
    d.creation_date; 
+0

完美的作品!謝謝。 :) – Jonny07