MySQL:将多个查询中的记录收集到一个结果中

时间:2009-05-25 09:52:52

标签: sql mysql

我希望创建一个SQL查询来收集多个查询的结果。

我想应用随机排序顺序并返回有限数量的记录。

查询将返回相同的字段(在此示例中为“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)并非必不可少,但它会很棒。

这是可能的还是我需要单独创建每个查询?

1 个答案:

答案 0 :(得分:3)

使用UNION组合查询。将它们包装在子查询中,以便您可以ORDER BY和LIMIT结果:

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