【MySQL必知必会】第14章:子查询

14.1 子查询

子查询即嵌套在其他查询中的查询

SELECT cust_name, cust_contact
FROM customers
WHERE cust_id IN (SELECT cust_id
                     FROM orders
                     WHERE order_num IN (SELECT order_num
                                        FROM orderitems
                                        WHERE prod_id = 'TNT2'));
  • 在WHERE子句中使用子查询能够编写出功能很强并且很灵活的SQL语句。
  • 对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询。

14.2 字段子查询

除了能直接嵌套子查询语句外,还可以嵌套子查询的字段来进行检索:

SELECT cust_name,
        cust_state,
        (SELECT COUNT(*)
        FROM orders
        WHERE orders.cust_id = customers.cust_id) AS orders
FROM customers
ORDER BY cust_name;
  • 要注意的是,这里使用到了完全限定列名「order.」以便数据库能快速的定位字段
  • 如果不使用完全限定列名,当数据其他表中存在类似cust_id的命名相同的情况,就会容易检索出其他结果

你可能感兴趣的:(【MySQL必知必会】第14章:子查询)