当存在相同的列名时,如何在 where 子句中定位别名列名?

问题描述 投票:0回答:1

所以在原来的表格

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
一样。有没有一种方法可以显式获取别名列名?

sql sqlite alias
1个回答
2
投票

您不能从

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
© www.soinside.com 2019 - 2024. All rights reserved.