我的 sql 有问题,我试图根据年龄组显示用户,将字符串与主键一起附加,但我只希望显示一个值
我相信是这样的
SELECT users.gbpfid,
users.aid,
compresults.total,
agegroup.aid AS aid2
FROM compresults
INNER JOIN competitions
ON competitions.cid = compresults.cid
INNER JOIN agegroup
ON agegroup.aid = users.aid
INNER JOIN users
ON compresults.gbpfid = users.gbpfid
WHERE competitions.compdate = (SELECT competitions.compdate
FROM competitions
INNER JOIN compresults
ON compresults.cid =
competitions.cid
WHERE compresults.gbpfid = users.gbpfid
ORDER BY competitions.compdate DESC
LIMIT 1)
然而这会引发这个错误
SQL Error (1054): Unknown column 'users.aid' in 'on clause'
我想不通
当我删除 第 5 行的“on agegroup.aid = users.aid”
它显示记录,但是对于每个辅助
我很困惑它如何识别没有内部连接(指定连接)的列,但是当我对年龄组表进行整个内部连接时,它连接正常,但包含所有记录
有什么想法吗?谢谢
最佳答案
您正在尝试在加入 users 表之前使用 users.aid 加入年龄组。
INNER JOIN competitions
ON competitions.cid = compresults.cid
INNER JOIN agegroup
ON agegroup.aid = users.aid
INNER JOIN users
ON compresults.gbpfid = users.gbpfid
如您所见,在加入之前您正在访问 users.aid。将连接顺序更改为:
competitions -> users -> agegroup
这应该有效:
INNER JOIN competitions
ON competitions.cid = compresults.cid
INNER JOIN users
ON compresults.gbpfid = users.gbpfid
INNER JOIN agegroup
ON agegroup.aid = users.aid
您现在应该可以访问 users.aid。
希望这对您有所帮助。
关于mysql - SQL 未知列,尽管它确实存在 - SQL 错误 (1054),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35223099/