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语句 一个表的值与另一个表的字段一致,怎么把两一个表的值作为条件,限定查询的字段