这是我的查询有问题的部分:
SELECT
(SELECT id FROM users WHERE name = 'John') as competitor_id,
(SELECT MIN(duration)
FROM
(SELECT duration FROM attempts
WHERE userid=competitor_id ORDER BY created DESC LIMIT 1,1
) x
) as best_time
在执行时,它会抛出此错误:
#1054 - 'where 子句'中的未知列 'competitor_id'
看起来派生表“x”看不到父表的查询别名competitor_id
。有什么方法可以创建某种全局别名,所有派生表都可以使用它?
我知道我可以competitor_id
直接在 WHERE 子句中将查询用作子查询并完全避免使用别名,但我的实际查询要大得多,我需要competitor_id
在更多子查询和派生表中使用,所以如果我会这样做效率会很低多次使用相同的子查询。