Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 改进我的查询以提高效率_Mysql_Sql - Fatal编程技术网

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来写呢?哦,我真的很抱歉,但是我是这个网站的新手。你能发布用户和朋友表的表定义吗?