为啥我们要合并几个select语句

Posted

技术标签:

【中文标题】为啥我们要合并几个select语句【英文标题】:Why do we combine several select statements为什么我们要合并几个select语句 【发布时间】:2015-09-10 11:45:35 【问题描述】:

这个问题可能有点傻,但是我们为什么要在 SQL 中组合几个 select 语句。我还没有找到答案。 示例:

 select OrderID from (SELECT Customers.CustomerName, Orders.OrderID
 FROM Customers
 INNER JOIN Orders
 ON Customers.CustomerID=Orders.CustomerID
 ORDER BY Customers.CustomerName);

【问题讨论】:

准备做更复杂的事情,或者剥离更复杂的事情?就目前而言,它没有多大意义...... 【参考方案1】:

线索在“关系数据库”的“关系”部分

关系是一组行,因此可以是:

    表中的行 从视图中投影的行 从查询中投影的行 从公用表表达式投影的行

理论上,所有这些都是相同的,因此从表中选择在逻辑上与从视图或从另一个查询中选择相同,并且连接两个表在逻辑上与连接两个查询相同。

至于为什么这样做,这里有三个不错的理由:

    为了避免必须将临时结果集保存到某个结构中然后再次读出。 因为在某些情况下,无法通过 WHERE 或 HAVING 子句对查询放置条件,而谓词必须放在结果集上。 编码方便。

【讨论】:

【参考方案2】:

此查询的输出将是客户表中有客户的所有订单,并且不会给出客户表中没有任何条目的任何订单。此外,订单将按其 customerName 值的升序排列。

【讨论】:

以上是关于为啥我们要合并几个select语句的主要内容,如果未能解决你的问题,请参考以下文章

mysql insert into select 语句为啥会造成死锁

为啥这个合并语句不起作用?

合并 Select 语句并动态排序?

为啥select 子句中的字段一定要出现在Groupby子句中

SQL怎么合并表?

如何将这些 SQL SELECT 查询合并到一个 SELECT 语句中