2016-11-07 55 views
0

这是一个有效的MySQL查询,你可以使用嵌套查询外的列的别名? (series_id_a和series_id_b是函数的输入,这是应该在一个函数被使用)嵌套MySQL查询列别名

select x1 as x1a, x2 as x2a, y1 as y1a, y2 as y2a FROM region WHERE series_id = series_id_a AND EXISTS(
        SELECT x1 as x1b, x2 as x2b, y1 as y1b, y2 as y2b FROM region WHERE series_id = series_id_b AND x1b = x1a AND x2b = x2a AND y1a = y1b AND y2a = y2b 
       ) 

回答

1

不,这不是有效的引用指派给在外部查询表达式的列别名,在条件WHERE子句中。

为了清晰起见,以及未来读者的理智,以及所有在这个世界上美好而美好的东西...... 限定所有列参考。

至于什么,我猜你的例子正在努力实现:

SELECT r.x1 AS x1a 
     , r.x2 AS x2a 
     , r.y1 AS y1a 
     , r.y2 AS y2a 
    FROM region r 
    WHERE r.series_id = ? -- series_id_a parameter 
    AND EXISTS (SELECT 1 
        FROM region q 
        WHERE q.series_id = ? -- series_id_b parameter 
        AND q.x1 = r.x1 
        AND q.x2 = r.x2 
        AND q.y1 = r.y1 
        AND q.y2 = r.y2 
       ) 
+0

这是有道理的,我知道排位赛却不得不线索,你可以像嵌套查询中出线。感谢和抱歉打扰。 –