我有一个包含两个主要列(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/