Mysql where子句中的unknow列
我有一个这样的问题-Mysql where子句中的unknow列,mysql,sql,union,Mysql,Sql,Union,我有一个这样的问题- SELECT e.id, ( (SELECT ABS((SELECT YEAR(NOW()) - YEAR(ud.dob) FROM user_detail ud WHERE ud.userid = 49) - AVG(avgr.abc + (SELECT Y
SELECT e.id,
( (SELECT ABS((SELECT YEAR(NOW()) - YEAR(ud.dob)
FROM user_detail ud
WHERE ud.userid = 49) - AVG(avgr.abc
+ (SELECT YEAR(NOW()) - YEAR(ud.dob)
FROM user_detail ud
WHERE ud.userid = 49))) AS VALUE
FROM (SELECT YEAR(NOW()) - YEAR(ud.dob) AS abc
FROM user_detail ud
WHERE ud.userid = (SELECT ei.interested_user
FROM event_interest ei
WHERE ei.eventid = e.id
AND ei.approvalstatus = 'Approve')
UNION
SELECT YEAR(NOW()) - YEAR(ud.dob) AS abc
FROM user_detail ud
WHERE ud.userid = (SELECT ei.invited_user
FROM event_invite ei
WHERE ei.eventid = e.id
AND ei.acceptance = 'Accept')) AS avgr)
+ (SELECT IFNULL(( 3959 * ACOS(COS(RADIANS(22.6979425)) * COS(RADIANS(latitude)) * COS(RADIANS(longitude) - RADIANS(75.8597305)) + SIN(RADIANS(22.6979425)) * SIN(RADIANS(latitude))) ), 0)
FROM address a
WHERE a.latitude != ''
AND a.longitude != ''
AND e.event_address = a.id) ) AS dest
FROM event e
WHERE ( ( e.maximumattendeesallow > ( (SELECT COUNT(*) AS cnt
FROM event_interest
WHERE eventid = e.id
AND approvalstatus = 'Approve')
+ (SELECT COUNT(*) AS cnt
FROM event_invite
WHERE eventid = e.id
AND acceptance = 'Accept') ) )
OR ( e.maximumattendeesallow = 0 ) )
AND EXISTS (SELECT id
FROM address a
WHERE latitude != ''
AND longitude != ''
AND e.event_address = id
AND IFNULL(( 3959 * ACOS(COS(RADIANS(22.6979425)) * COS(RADIANS(latitude)) * COS(RADIANS(longitude) - RADIANS(75.8597305)) + SIN(RADIANS(22.6979425)) * SIN(RADIANS(latitude))) ), 0) < 100)
AND NOT EXISTS (SELECT eventid
FROM event_interest
WHERE e.id = eventid
AND approvalstatus != 'InterestExpressed'
AND interested_user = 49)
AND NOT EXISTS (SELECT eventid
FROM event_invite
WHERE eventid = e.id
AND invited_user = 49);
为什么不允许子查询在ORDERBY子句中使用e.id呢。在查询中,您使用了e.id。将其更改为“e.id”并执行。这一次您将不会得到那个错误。在第四个select子句中,它位于后面,不存在(在你提到的where子句中选择..,将其命名为where e.id=eventid,而不是这个,写为where eventid=e.id。这将解决你的错误。请格式化你的查询。我看过这篇文章,上面说where子句e.id首先求值,我如何重写这个查询,以便以后先求值。请反对删除并删除其中一个答案
Error Code: 1054
Unknown column 'e.id' in 'where clause'