我正在使用MySQL Server 5.7,我有这个查询:
select
regDate,
userID,
t.teamID,
login
from
tbl_user u
inner join
tbl_team t on u.userID = t.userID
where
regDate >= DATE_ADD(CURDATE(), INTERVAL -2 MONTH)
AND
(
select sum(transactions) from (
SELECT count(*) as transactions FROM tbl_pp where (fromTeamID = t.teamID or forTeamID = t.teamID) and transactionDate >= u.regDate
union all
SELECT count(*) as transactions FROM tbl_psc where (fromTeamID = t.teamID or toTeamID = t.teamID) and transactionDate >= u.regDate
union all
SELECT count(*) as transactions FROM tbl_mp where (fromTeamID = t.teamID or forTeamID = t.teamID) and transactionDate >= u.regDate
) as all
) > 0
我收到此错误:
错误代码:1054。"where 子句"中的未知列"t.teamID"
我确定这只是一个小问题,但我现在无法得到它。并且列teamID
存在于表 tbl_team
中。有人给我提示吗?
不能嵌套多个
查询深度的相关引用。 无论如何,您最好使用exists
:
select u.regDate, u.userID, t.teamID, u.login
from tbl_user u inner join
tbl_team t
on u.userID = t.userID
where u.regDate >= DATE_ADD(CURDATE(), INTERVAL -2 MONTH) and
(exists (select 1
from tbl_pp p
where t.teamID in (p.fromTeamID, p.forTeamID) and
p.transactionDate >= u.regDate
) or
exists (select 1
from tbl_psc p
where t.teamID in (p.fromTeamID, p.toTeamID) and
p.transactionDate >= u.regDate
) or
exists (select 1
from tbl_mp p
where t.teamID in (p.fromTeamID, p.forTeamID) and
p.transactionDate >= u.regDate
)
)