MySQL:一个查询中的多个 SELECT 语句

时间:2021-06-07 07:20:31

标签: mysql

我仍在学习 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

2 个答案:

答案 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;

Working Fiddle

答案 1 :(得分:0)

使用联合,您始终可以添加硬编码值以帮助区分行:

select 'Invertebrate' as AnimalPhylum, species as AnimalSpecies from invertebrates_table
union
select 'Vertebrate', species from vertebrates_table;