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/

相关文章:

PHP - 通过 cron 作业自动检测主目录

php - 使用 PHP while 循环显示多个表中的 MySQL 数据

mysql - Windows 10 企业版 - MYSQL 意外关闭

mysql - 我需要在具有次要条件的 SQL 表中查找/替换值

python - 是否可以使用已删除的架构运行 makemigrations ?

sql - 检查行之间的公共(public)值

php - 创建一个函数来替换从 XML 文件获取的字符串

php - 当选择是数组时,根据另一个选择框填充一个选择框

php - PDO 使用 where 子句选择多个表

mysql - Json 模式字段顺序