php - 将用户 ID 传递给嵌套查询

标签 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, 
        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 - Unknown column 'UIDD' in 'where clause'

这可能是现在已弃用的旧语法的问题吗?我现在运行的是 MySQL 5.5.24。

最佳答案

像这样,SELECT .. WHERE userid NOT IN(子查询)

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;

关于php - 将用户 ID 传递给嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13038187/

相关文章:

php - Laravel 迁移重命名可为空的字段解决方法?

php - Laravel 5.2 curl_init() 抛出错误 "Call to undefined function"

php - 通过php检查mysql_query的结果中是否有条目

mysql - 如何在 mySQL 中将日期转换为字符串?

mysql - Node js : association not working in sails js version 1

php - 在同一页面上打开基于 Javascript 的弹出广告

PHP/MYSQL 查询如果不在第二个表中

mysql - "Merging"多个数据库表

sql - 存储过程比 SSMS 中的查询慢

php - 如果单击链接,此 PHP 代码应该如何过滤掉显示的 SQL 行?