2009-05-25 74 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

相关问题