MySQL-子查询,派生表,通用表达式

MySQL-子查询

MySQL子查询是嵌套在另一个查询中的查询。

MySQL子查询还可以嵌套在另一个子查询中。

MySQL子查询称为内部查询,而包含子查询的查询称为外部查询。

查询返回在位于美国(USA)的办公室工作的员工。

SELECT 
    lastName, firstName
FROM
    employees
WHERE
    officeCode IN (SELECT 
            officeCode
        FROM
            offices
        WHERE
            country = 'USA');

MySQL-派生式

派生式和子查询通常可互换使用。当SELECT语句的FROM子句中使用独立子查询时,我们将其称为派生表

子查询不同,派生表必须具有别名,以便稍后在查询中引用其名称。

实例:

orders表和orderdetails表中获得2013年销售收入最高的前5名产品:

SELECT 
    productCode, 
    ROUND(SUM(quantityOrdered * priceEach)) sales
FROM
    orderdetails
        INNER JOIN
    orders USING (orderNumber)
WHERE
    YEAR(shippedDate) = 2013
GROUP BY productCode
ORDER BY sales DESC
LIMIT 5;

MySQL-公共表达式(CTE)

公用表表达式是一个命名的临时结果集,仅在单个SQL语句的执行范围内存在。

查询顾客信息:

WITH customers_in_usa AS (
    SELECT 
        customerName, state
    FROM
        customers
    WHERE
        country = 'USA'
) SELECT 
    customerName
 FROM
    customers_in_usa
 WHERE
    state = 'CA'
 ORDER BY customerName;

 

posted @ 2017-12-31 11:35  Nice1949  阅读(677)  评论(0编辑  收藏  举报