我仍在学习 MySQL,但我想知道如何在一个查询中查询多个 SELECT 语句。
目前我有两个查询,一个显示 12 个月的订单数,另一个显示一个月的订单数。我想同时查询,但得到两个不同的结果。
我尝试在查询中使用 UNION
,但它只输出到一个表中,很难区分结果与查询的内容。
SQL:
SELECT OrderDate, OrderItems, COUNT(*) AS Total FROM tb_orders WHERE OrderDate > DATE_SUB(now(), INTERVAL 12 MONTH) GROUP BY OrderItems ORDER BY Total DESC LIMIT 10
SELECT OrderDate, OrderItems, COUNT(*) AS Total FROM tb_orders WHERE OrderDate > DATE_SUB(now(), INTERVAL 1 MONTH) GROUP BY OrderItems ORDER BY Total DESC LIMIT 10;
TIA
答案 0 :(得分:1)
您可以通过动态创建标识符来合并 2 个查询,无论记录是来自每月还是每年的查询。列 type
是以下查询中用于此目的的列,
SELECT z.*
FROM
(
SELECT OrderDate, OrderItems, COUNT(*) AS Total, 'YEAR' as type
FROM tb_orders
WHERE OrderDate > DATE_SUB(now(), INTERVAL 12 MONTH)
GROUP BY OrderItems
LIMIT 10
UNION
SELECT OrderDate, OrderItems, COUNT(*) AS Total, 'MONTH' as type
FROM tb_orders
WHERE OrderDate > DATE_SUB(now(), INTERVAL 1 MONTH)
GROUP BY OrderItems
LIMIT 10
) AS z
ORDER BY z.Total DESC;
答案 1 :(得分:0)
使用联合,您始终可以添加硬编码值以帮助区分行:
select 'Invertebrate' as AnimalPhylum, species as AnimalSpecies from invertebrates_table
union
select 'Vertebrate', species from vertebrates_table;