• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 相关子查询

    相关子查询是包含要也出现在外部查询表的基准的子查询。例如:

    SELECT * FROM t1
      WHERE column1 = ANY (SELECT column1 FROM t2
                           WHERE t2.column2 = t1.column2);
    

    请注意t1,即使子查询的FROM子句未提及table ,子查询仍包含对的列的引用t1。因此,MySQL在子查询之外查找,并t1在外部查询中查找。

    假设该表t1包含一行where column1 = 5column2 = 6;同时,表格t2包含其中column1 = 5和的行column2 = 7。简单表达式... WHERE column1 = ANY(SELECT column1 FROM t2)TRUE,但是在此示例中,WHERE子查询中的子句为FALSE(因为(5,6)不等于(5,7)),因此整个表达式为FALSE

    作用域规则: MySQL从内到外进行评估。例如:

    SELECT column1 FROM t1 AS x
      WHERE x.column1 = (SELECT column1 FROM t2 AS x
        WHERE x.column1 = (SELECT column1 FROM t3
          WHERE x.column2 = t3.column1));
    

    在此语句中,x.column2必须是表中的一列,t2因为SELECT column1 FROM t2 AS x ...重命名t2。它不是表中的列,t1因为它SELECT column1 FROM t1 ...是一个外部查询,它更远