php - MySQL:使用联合检查两列是否包含彼此的值?

标签 php mysql sql

我有一个包含两个主要列(uid 和 fid)的 friend 表,我主要是想看看这个 friend 是否也是用户的 friend ,所以

uid 5 -> fid 6
uid 6 -> fid 5

我曾尝试混合和混搭 SELECT 查询以某种方式返回决定性结果,但似乎找不到任何东西。 count() 将返回一列或两列(两列是正确的),但是 PHP 的 PDO 没有很好的方法来找到没有 hackish 循环的选定(未受影响)行的数量。

(SELECT count(uid) FROM friends WHERE uid = 1 AND fid = 2)
  UNION ALL -- Or plain union
(SELECT count(uid) FROM friends WHERE uid = 2 AND fid = 1)

这当然仍然会返回一两行 0/1 或 0 或 1

你能想办法在 MySQL 中第一列返回 1 或 0 吗?或将此功能写入我的程序的更好方法? (我尽量避免骇人听闻的事情)

最佳答案

你需要一个自动连接来返回所有处于双射友谊中的一对用户/ friend :

SELECT f.uid, f.fid
FROM Friend f
    INNER JOIN Friend ff
       ON f.uid = ff.fid
       AND f.fid = ff.uid

请注意,在您的情况下,它将返回“重复项”:

uid  |  fid
5       6
6       5

关于php - MySQL:使用联合检查两列是否包含彼此的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508122/

相关文章:

sql - 将 mysql 数据库转换为 sqlite 数据库的最佳方法是什么?

java - 使用内部联接查询运行 count() 时,Room 返回包含一项的列表,而不是空列表

sql - 如何使用另一个表中记录按 id 匹配的值更新表中的所有记录?

php - 蜜 jar 技术对垃圾邮件的效果如何?

php - 将图像 URL 上传到 mySQL 数据库以进行 JSON 输出

php - PHP-检测另一个对象上的更改

php/mysql 标签查询模式

mysql - Mysql 查询中出现 LIKE %...% 错误

mysql - 为什么 mysql 案例条件不能正常工作

触发器内的 select 语句中的 MySQL 错误