[My SQL] 组合查询

MySQL允许执行多个查询(多条SELECT语句),并将结果作为单个数据集显示,这些组合查询通常称为并(union)或者符合查询(compound query)。

我们使用UNION操作符来组合多天SELECT查询语句。

以products为例:


我们想要价格低于5的一个物品列表,也想得到厂商是1001和1002的物品列表,解决这个问题有三种方式:

1.使用两条独立的查询:


2.使用WHERE组合限制条件:


可以看到筛选的结果有8条,比第一种方法少了一条数据,因为WHERE只筛选不重复的行;

3.使用组合查询


可以看到,和第一种方式类似,我们在两条语句之间插入了UNION来组合两条SELECT语句。

以下是使用UNOIN的一些规则:

1.UNOIN必须由两条或者两条以上的SELECT语句组成,语句之间使用关键字UNION分隔;

2.UNION中的每个查询必须包含相同的列、表达式或者聚集函数;

3.UNION从查询结果中自动去除了重复的结果,和WHERE语句的结果类似;

4.如果不想对结果进行去重,可以使用UNION ALL:


5.在对UNION进行组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后: