如何在mysql中比较2个表并检查结果

时间:2016-08-04 08:00:37

标签: php mysql sql mysqli

我有两张桌子,其中一张是给一个人的朋友,另一张是渠道成员。

我想检查一下我的朋友是否是其中一个频道成员。如果是这样,不要出示他的名字,否则告诉他。

$get_friend = "select * from friends where user_1_id='$user_id' AND friends_status=1";
$run_friend = mysqli_query($conn,$get_friend);

$select_members = "SELECT user_id from channel_members where channel_id='$channel_id'";
$run_members = mysqli_query($conn,$select_members);

2 个答案:

答案 0 :(得分:0)

SELECT
    friends.*
FROM
    friends
LEFT JOIN channel_members 
    ON channel_members.channel_id = '$channel_id' 
        AND channel_members.user_id = friends.user_2_id
WHERE
    user_1_id = '$user_id' 
        AND friends_status = 1 
        AND channel_members.channel_id IS NULL

您可以使用此查询。

我添加了一个排除LEFT JOIN

它会尝试将您朋友频道的成员加入到结果中,但是通过在where子句中指定channel_members.channel_id IS NULL来过滤那些真正拥有频道成员的数据集 - 离开只有不在频道的朋友。

答案 1 :(得分:0)

尝试此查询:

select * from friends where user_1_id='$user_id' AND friends_status=1 AND user_2_id NOT IN(SELECT user_id from channel_members where channel_id='$channel_id')

这将从朋友表中选择所有不是频道'$ channel_id'

成员的朋友