MySQL查询基于另一个表的条件

Posted

技术标签:

【中文标题】MySQL查询基于另一个表的条件【英文标题】:MySQL query based on condition from another table 【发布时间】:2015-10-14 15:58:26 【问题描述】:

我正在尝试编写一个 mysql 查询,该查询根据从另一个表评估的条件选择 10 个用户名。

结果将是 10 个用户名作为建议遵循。所以,我需要选择 10 个当前未被登录用户关注的用户名。

下面返回的是已经关注的用户,所以有问题。知道如何解决吗?

"SELECT  username
FROM    users
WHERE   NOT EXISTS
        (
        SELECT  id 
        FROM    user_followers
        WHERE   user_followers.user_followed_id = users.username AND user_followers.user_follower_id = ?
        )  
ORDER BY followers DESC LIMIT 10 "

user_followed_id - 从外部查询中评估的用户的用户名。 user_follower_id - 进行检查的用户的用户名(使用准备好的语句)

【问题讨论】:

我想你可能想用NOT IN 子句代替NOT EXISTS 看看是否可行。 如果您可以使用您拥有的表格结构更新您的问题,这也会很有帮助。 user_followers.user_followed_id = users.username 比较 id 和用户名?怎么样? 【参考方案1】:

也许试试左连接

  SELECT *
  FROM users  u
  LEFT JOIN user_followers uf
    ON u.username  = uf.user_followed_id 
   AND uf.user_follower_id <> ?

【讨论】:

【参考方案2】:

我希望这会有所帮助:

SELECT  username
FROM    users
WHERE username  NOT EXISTS
    (
    SELECT  user_followers.user_followed_id -- I see in you code below that you use this to store the username 
    FROM    user_followers
    WHERE   user_followers.user_follower_id = ?
    )
AND username <> ?  -- if the parameter is not the username,may be changed by the id column name of the user
ORDER BY followers DESC LIMIT 10 

【讨论】:

以上是关于MySQL查询基于另一个表的条件的主要内容,如果未能解决你的问题,请参考以下文章

mysql中sql语句查询的同时根据条件将数据插入到另一个表的做法?

将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)

SQL语句 一个表的值与另一个表的字段一致,怎么把两一个表的值作为条件,限定查询的字段

sql中引用一个表的查询结果作为条件来查询另一个表如何实现?

mysql数据库分表

针对另一个表的随机 MySQL 查询验证