2009-05-25 49 views
0

我期待創建一個收集多個查詢結果的SQL查詢。MySQL:將來自多個查詢的記錄收集到一個結果中

我想應用隨機排序順序並返回有限數量的記錄。

查詢將全部返回相同的字段(本例中爲「RefCode」),但將具有不同的FROM和WHERE語句。

請參見下面的一些可能出現的問題的一個例子:

SELECT PD.RefCode 
FROM ((PD 
INNER JOIN P ON PD.PrdFK = P.PrdID) 
INNER JOIN PR ON PR.ChildCatFK = P.ChildCatFK) 
WHERE PR.ParentCatFK = 6 

SELECT PD.RefCode 
FROM (PR 
INNER JOIN PD ON PR.PrdDetFK = PD.PrdDetID) 
WHERE PR.ChildCatFK = 14 

我曾嘗試這樣做使用各種技術(即UNION),但一直沒能得到正確的方法。

記錄的隨機排序和限制(使用RAND()LIMIT 0,10)並不是必需的,但它會很棒。

這是可能的還是我需要分別創建每個查詢?

回答

3

使用UNION合併查詢。將它們包裝在子查詢中,以便您可以訂購併限制結果:

SELECT RefCode 
FROM (
    SELECT PD.RefCode 
    FROM PD 
    INNER JOIN P ON PD.PrdFK = P.PrdID 
    INNER JOIN PR ON PR.ChildCatFK = P.ChildCatFK 
    WHERE PR.ParentCatFK = 6 

    UNION ALL 

    SELECT PD.RefCode 
    FROM PR 
    INNER JOIN PD ON PR.PrdDetFK = PD.PrdDetID 
    WHERE PR.ChildCatFK = 14 

) subquery 
ORDER BY RAND() 
LIMIT 10 
+0

完美地工作,謝謝! – ticallian 2009-05-25 10:11:08

相關問題