如何正确使用sql NOT IN(..)方法?

时间:2016-04-24 11:52:58

标签: php mysql

我正在尝试做一些名为“你可能在你的学校认识的人,而不是你的朋友”

我将首先解释我的代码背后的基本逻辑:

我正在使用当前登录用户获取与同一所学校相同的用户ID(来自主表-USERS),如果我得到至少10行,

然后我询问数据库问题(来自朋友表-FRIEND),如果当前用户已经是他们的朋友(使用他们的ID)

contitions: 如果当前的loggin用户是他们的朋友,他们中的一些{ 要求数据库选择(来自主表 - USERS)其中id不在facebook表中,并且学校等于当前登录用户学校 }

问题: 在我的代码中,我使用的是sql NOT IN(...)方法,它在好友表中多次返回相同的id,并且不在friends表中返回id 即使他们这些用户不在同一所学校

我的问题是:如何正确使用NOT IN()方法在我的代码中获得与IN($ user)方法相反的方法,或者我可以用什么正确的逻辑来实现这一点。

请原谅我很多人问你们......我是PHP和SQL的孩子

非常感谢实用的代码示例。 非常感谢你。

下面是我的代码:

function somepeopleyoumayknow(){
global $dbc_conn, $IsLoggIn,$table_name,$friend_request_table,$friends_table ; 

$cu_school = getuser($IsLoggIn,'cell_group');

$peopleids= mysqli_query($dbc_conn,"SELECT * FROM $table_name WHERE 
cell_group='$cu_school'  AND id !='$IsLoggIn' ORDER BY RAND() LIMIT 10");
if(mysqli_num_rows($peopleids) > 0){
while($run_pids = mysqli_fetch_array($peopleids)){
$pid = $run_pids['id'];

//echo $pidd = $run_pids['id']."<br>";

//ckeck if you are already friends
$quer_check_friendship = mysqli_query($dbc_conn,"SELECT user_one,user_two FROM $friends_table
WHERE (user_one='$IsLoggIn' AND user_two IN($pid)) OR (user_one IN($pid) AND user_two='$IsLoggIn')");
$nr = mysqli_num_rows($quer_check_friendship);
if($nr > 0 ){ while($run_nr = mysqli_fetch_assoc($quer_check_friendship)){
    if($run_nr['user_one'] ==$IsLoggIn){
        $user = $run_nr['user_two'];
    }else{

    $user = $run_nr['user_one'];

    }



    $query_not_friend_with = mysqli_query($dbc_conn,"SELECT id FROM $table_name WHERE id NOT IN($user)  AND cell_group='$cu_school' ");
while($run_not_frnds_with = mysqli_fetch_assoc($query_not_friend_with)){ echo "You are not friends with".$run_not_frnds_with['id']."<br>";}
}


}else{
    echo 'Not friends with them so do sothing here';

}

}






}



}

1 个答案:

答案 0 :(得分:0)

使用NOT IN

MySQL NOT IN()确保表达式继续没有参数中的任何值。

<强>语法

expr NOT IN (value,...)

示例:

如果要从包含非英文或德文书籍的book_mast表中获取行,可以使用以下sql语句。

$user = '1, 2, 3';
SELECT `id` FROM $table_name WHERE id NOT IN($user) AND cell_group='$cu_school'