如何在SQL中嵌套子查询的联接?

时间:2019-05-09 18:05:05

标签: sql join subquery

我正在尝试实现自动查询生成器,而我对一种查询的方法是采用这种方式嵌套嵌套 选择*从((Q1在Q1.x上加入Q2 = Q2.x)作为T1在T1.x = Q3上加入Q3)作为T2)在T2.x = Q4.x上加入Q4)作为T3 ...

我试图以这种方式实现它,但是语法似乎是错误的

SELECT
  *
FROM
  (
    (
      SELECT
        *
      FROM
        (
          Select
            *
          From
            Customers
        ) AS q11
        INNER JOIN (
          Select
            *
          From
            Customers
        ) AS q12 ON q11.customerID = q12.customerID
    )
  ) q1
  JOIN (
    Select
      *
    from
      Customers
  ) q2 ON q1.q11.CustomerID = q2.CustomerID

2 个答案:

答案 0 :(得分:2)

Select语句和子查询不返回带点的列。

所以q1.q11.CustomerID没有意义。

SQL JOIN计算交叉联接。该值首先在每个左表列中都有一列,并带有左表列的名称;那么该值在每个右表列中都有一个列,并带有右表列的名称。列通过点列名称(也称为列引用)标识,但它们的名称没有点。 SELECT *返回所有这些列,因此当输入表共享名称时,它返回重复的名称。但是名称中没有点。

答案 1 :(得分:0)

from子句中的查询适合创建表。

select * from(选择* from(选择* from(选择* from q1,q2其中q1.x = q2.x))t1,q3其中t1.x = q3.x)t2,q4其中t2.x = q4.x)t3,q5其中t3.x = q5.x