所以在原始表SELECT id FROM drivers
中有一个列teamid
。然而在我的复杂查询中,这个teamid
没有用于输出。
我使用的是teamid
,但它来自另一个表作为别名。
SELECT
id,
(
SELECT
teamid
FROM
attendancelist
WHERE
activityid = 3
AND driverid = driver.id
) as teamid
FROM
drivers
当我尝试在teamid
上使用WHERE子句时。它使用来自driver
的teamid
,而不是别名teamid
。我发现避免这种情况的唯一方法是将别名重命名为不在驱动程序表中的列名,例如:customteamid
.
但是我想知道,就像你可以用driver.teamid
显式地从driver
中获取teamid
一样,有没有一种方法可以显式地获取别名列名?
1条答案
按热度按时间bakd9h0s1#
不能从
WHERE
中的SELECT
子句引用子查询。要执行您所描述的操作,您应该使用
JOIN
。大概是这样的
编辑:如果你的请求假设
teamid
是NULL
作为一个有效的结果,并且你计划在你的WHERE
子句中以某种精心设计的方式使用attendancelist.teamid
-使用LEFT JOIN
代替: