Php 将用户id传递给嵌套查询
我正在尝试从用户数据库中选择未订阅特定邮件列表的所有用户。如果用户是列表的成员,内部查询将查找该用户,外部查询将选择内部结果为零行的所有用户Php 将用户id传递给嵌套查询,php,mysql,sql,nested,Php,Mysql,Sql,Nested,我正在尝试从用户数据库中选择未订阅特定邮件列表的所有用户。如果用户是列表的成员,内部查询将查找该用户,外部查询将选择内部结果为零行的所有用户 SELECT u.userid, u.username, u.mail, u.name, u.lastname, u.starting_year, u.userid AS UIDD FROM userdb.users AS u WHERE (SELECT COUNT(*) FROM maildb.lists AS l, ma
SELECT u.userid, u.username, u.mail, u.name,
u.lastname, u.starting_year, u.userid AS UIDD
FROM userdb.users AS u
WHERE (SELECT COUNT(*) FROM maildb.lists AS l,
maildb.list_subscriptions AS s, userdb.users AS u
WHERE u.userid = UIDD
AND l.listid = '$LIST_ID_TO_LOOKUP'
AND s.userid = u.userid
AND s.listid = l.listid) = 0
ORDER BY u.starting_year DESC, u.lastname, u.name;
在我转移到新服务器并更新了许多组件(包括MySQL)之前,这一切都很好
现在,运行此查询时出现错误:
1054-where子句中的未知列“UIDD”
这可能是一个旧语法的问题,现在已经被去除了吗?我现在运行的是MySQL 5.5.24。您不能这样做
您可以做的是重写子查询以按u.userid选择列和组,并在sub_select.userid=u.userid上加入此子选择。。其中userid不在子查询中
SELECT
u.userid,
u.username,
u.mail,
u.name,
u.lastname,
u.starting_year,
u.userid AS UIDD
FROM
userdb.users AS u
WHERE
u.userid NOT IN (
SELECT
u.userid
FROM
maildb.lists AS l,
maildb.list_subscriptions AS s,
userdb.users AS u
WHERE
u.userid = u.userid
AND l.listid = '$LIST_ID_TO_LOOKUP'
AND s.userid = u.userid
AND s.listid = l.listid
)
ORDER BY
u.starting_year DESC, u.lastname, u.name;
@thatidiotguy-不,UIDD在根查询中有别名。工作起来很有魅力:我想知道为什么以前的查询可以工作,但现在不行。