我希望创建一个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
)并非必不可少,但它会很棒。
这是可能的还是我需要单独创建每个查询?
答案 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