内连接中间结果的别名

时间:2015-08-23 23:45:21

标签: mysql sql join

当我为连接的结果分配别名时,我的SQL查询失败。

以下是示例:

SELECT 
    a, b, c 
FROM 
    ((q 
INNER JOIN 
    r ON q.x = r.y) AS IntermediateResult 
INNER JOIN 
    s ON IntermediateResult.a = s.a)

基本上,在第二个内连接中似乎无法识别别名。

我正在使用Mysql

2 个答案:

答案 0 :(得分:1)

你根本不需要子查询:

SELECT a, b, c
FROM q INNER JOIN
     r
     ON q.x = r.y INNER JOIN
     s
     ON q.a = s.a;  -- This is either q.a or r.a

除非您使用MS Access,否则括号也是不必要的。

答案 1 :(得分:0)

您不必将内部联接的结果标记为中间结果,因为您可以直接加入表:

SELECT a,b,c FROM (
    SELECT * FROM q
    INNER JOIN r  AS IntermediateResult
            ON q.x=r.y
    INNER JOIN s
            ON IntermediateResult.a=s.a
) AS joined_qrs