Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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子查询_Sql_Mysql - Fatal编程技术网

使用左连接重写mysql子查询

使用左连接重写mysql子查询,sql,mysql,Sql,Mysql,我有一张这样结构的桌子: 液体 希德 所有整数。此表模拟两个用户之间的友谊 我想做的就是找到只存在于一个方向的记录 例如: 当没有t2.s_id=15和t2.u_id=t1.s_id的记录时,我想找到t1.u_id=15的记录数 所以两个ID之间的关系只存在一次 在我看来,我已经成功地用子查询编写了正确的查询,但随后我开始使用左连接重写查询以提高速度,而现在…它不起作用了 我现在的问题是: SELECT * FROM `friends` AS f1 LEFT JOIN `friends` A

我有一张这样结构的桌子:

  • 液体
  • 希德
所有整数。此表模拟两个用户之间的友谊

我想做的就是找到只存在于一个方向的记录

例如: 当没有t2.s_id=15和t2.u_id=t1.s_id的记录时,我想找到t1.u_id=15的记录数

所以两个ID之间的关系只存在一次

在我看来,我已经成功地用子查询编写了正确的查询,但随后我开始使用左连接重写查询以提高速度,而现在…它不起作用了

我现在的问题是:

SELECT * FROM `friends` AS f1 LEFT JOIN `friends` AS f2 
ON f1.user_id = f2.friend_id 
WHERE f1.friend_id=15 AND f2.user_id IS NULL
但它不起作用。请帮忙

注意。我使用的是mysql 5,所以除了语句和所有其他好东西外,我不能使用它。

这个怎么样

SELECT * 
FROM `friends` AS f1 
    LEFT JOIN `friends` AS f2 ON f1.user_id = f2.friend_id AND f1.friend_id = f2.user_id
WHERE f1.friend_id=15 
    AND f2.user_id IS NULL
这个呢

friends
f1中选择* 左键连接f1上的朋友f2。用户id=f2。朋友id
其中f1.friend_id=15,f2.user_id为空

我猜你发现了记号的作用:)解释一下它是如何工作的?记录它发现它不应该或反之亦然?