php - MYSQL选择共同好友

标签 php mysql case mutual-friendship

我的“ friend ”表包含以下列:id、userID、userID2、state

userID 和 userID2 没有特定的放入数据库的顺序。

我目前使用此查询来查找用户 friend :

$quer = mysql_query("
SELECT CASE WHEN userID=$id THEN userID2 ELSE userID END AS friendID 
FROM friends WHERE userID=$id OR userID2=$id");

我已经尝试过,但它不起作用:

SELECT 
CASE WHEN userID=$id OR userID=$session THEN userID2 
ELSE userID END AS friendID  
FROM friends WHERE (userID=$session OR userID2=$session) 
AND (userID=$id OR userID2=$id) AND friendID!=$session

如果friendID=$session(我已将其添加到第二个查询中),它也不应该返回该行

编辑: 我想返回 $id 和 $session 共有的friendID 行。我不太确定为什么它不起作用。

最佳答案

解释之后(并实际阅读“相互”部分):

SELECT a.friendID
FROM
      ( SELECT CASE WHEN userID = $id
                      THEN userID2 
                      ELSE userID 
               END AS friendID 
        FROM friends 
        WHERE userID = $id OR userID2 = $id
      ) a
  JOIN
      ( SELECT CASE WHEN userID = $session
                      THEN userID2 
                      ELSE userID 
               END AS friendID 
        FROM friends 
        WHERE userID = $session OR userID2 = $session
      ) b
    ON b.friendID = a.friendID 

关于php - MYSQL选择共同好友,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8906154/

相关文章:

javascript - 根据用户位置查询数据库值

php - 具有一对多关系的多个表(Laravel)

sql-server - Row_Number() 使用 ORDER BY CASE 时的 CTE 性能

php - wpdb->查询准备不起作用

python - 在字典 switch 语句中模拟 'else'

mysql - 如果它不为空,则根据另一列的数据获取每月总和,因此如果它为空,则不会将其添加到总计中

javascript - 从放置在 div 中的下拉框中获取所选值

PHP mail() 如何设置发件人邮件

php - 内容随 php 中的变量动态变化

mysql - 无法使用 PHPMyAdmin 导入数据库