Mysql 改进我的查询以提高效率
请看一看这个查询,并尝试给我任何其他的想法,将给予完全相同的结果更有效Mysql 改进我的查询以提高效率,mysql,sql,Mysql,Sql,请看一看这个查询,并尝试给我任何其他的想法,将给予完全相同的结果更有效 SELECT username FROM users WHERE username NOT IN ( SELECT DISTINCT username FROM users, friends WHERE 'user1' IN (you,friend,username) AND you IN ('user1',username) AND friend IN ('u
SELECT username
FROM users
WHERE username NOT IN (
SELECT DISTINCT username
FROM users, friends
WHERE 'user1' IN (you,friend,username)
AND you IN ('user1',username)
AND friend IN ('user1',username))
AND username <> 'user1'
.这肯定是没有效率的-您的子选择中有一个笛卡尔坐标。从你的提问中,你并不特别清楚你实际上想要达到什么目的。如果你描述一下这个问题,会更有帮助。不过,我猜您正在尝试查找与“user1”不是朋友的所有用户。。?在这种情况下,这应该起作用:
SELECT username
FROM users
WHERE username NOT IN (
SELECT DISTINCT you
FROM friends
WHERE friend = 'user1'
UNION ALL
SELECT DISTINCT friend
FROM friends
WHERE you = 'user1')
AND username <> 'user1'
你的问题是什么?这个问题属于codereview.stackexchange.Comi。还有其他方法重新编写这个代码吗?它能工作,但在我看来效率不高。我怎么能用notexists来写呢?哦,我真的很抱歉,但是我是这个网站的新手。你能发布用户和朋友表的表定义吗?