所以在原来的表格
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 子句时。它使用 teamid
中的 driver
而不是别名 teamid
。我发现避免这种情况的唯一方法是将别名重命名为不在驱动程序表上的列名,例如:customteamid
.
但我想知道,就像您可以使用
teamid
明确地从 driver
得到 driver.teamid
一样。有没有一种方法可以显式获取别名列名?
您不能从
SELECT
子句中引用子查询WHERE
.
要执行您描述的操作,您应该改用
JOIN
。SELECT
id,
attendancelist.teamid
FROM
drivers
left join attendancelist on (
attendancelist.activityid = 3
AND attendancelist.driverid = drivers.id
)
where
attendancelist.teamid = 100500 -- YOU CONDITION HERE