php - 查询多个 WHERE 不工作

标签 php mysql sql

我的查询从某个区域(表 = 通知)中选择所有事件,但它确保这些事件没有被用户收藏(表 = 收藏夹)。

我的查询不起作用,我不确定为什么(它目前仍然显示用户收藏的事件)。

我的代码:

public function showCampusKT($uid)
            {
                $db = new db();
                $sql = "SELECT * FROM notifications 
                        WHERE 
                        n_beacon = 'Creativity Gym' 
                        OR
                        n_beacon = 'STIP'
                        OR
                        n_beacon = 'Cafetaria KruidTuin'
                        AND 
                        n_id !=
                        (                 
                            SELECT n_id
                            FROM favorites
                            WHERE u_id ='".$uid."'
                        )";
                $result = $db->conn->query($sql);
                return $result;
            }

最佳答案

你应该使用in/not in:

$sql = "select * 
        from notifications 
        where n_beacon in ('Creativity Gym','STIP','Cafetaria KruidTuin') and 
              n_id not in ( select n_id
                            from favorites
                            where u_id = '".$uid."')";

关于php - 查询多个 WHERE 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30897178/

相关文章:

php - Javascript变量不能在不同的文件中工作

mysql - 让 sailsJS 自动更新createdAt和updatedAt

sql - 如何在简单的三向关系上实现基于约束的参照完整性

mysql - 将日志文件中的数据字符串插入mysql数据库

php - 在 if 语句 PHP 的条件中使用语句的后果

php - Yii2 数据库 session - 存储附加属性和用户信息

php - 在索引之前检查Elasticsearch文档的相似性

mysql - 为范围内的每个日期选择行

php - 一条语句中的多个 MySQL SELECT

sql - 递归 CTE (T-SQL) 返回意外结果