mysql - OR 子句后的 AND 子句

标签 mysql

我正在尝试运行其中包含“FIND_IN_SET”的 MySQL 查询。

运行查询有效,但我还需要找到等于 1 的“user_optin”。

运行此查询当前会查找 user_optin 为“0”的人

SELECT `user_id`, `user_firstname`, `user_surname`, `user_email`, `user_type`, `user_optin`
FROM (`users`)
WHERE `user_type` =  'Volunteer'
AND 1 <=FIND_IN_SET(1, user_interests)
OR 1 <=FIND_IN_SET(2, user_interests)
OR 1 <=FIND_IN_SET(5, user_interests)
OR 1 <=FIND_IN_SET(6, user_interests)
OR 1 <=FIND_IN_SET(7, user_interests)
OR 1 <=FIND_IN_SET(8, user_interests)
OR 1 <=FIND_IN_SET(10, user_interests)
AND 1 <=FIND_IN_SET(1, user_activities)
OR 1 <=FIND_IN_SET(2, user_activities)
OR 1 <=FIND_IN_SET(4, user_activities)
OR 1 <=FIND_IN_SET(5, user_activities)
OR 1 <=FIND_IN_SET(11, user_activities)
OR 1 <=FIND_IN_SET(12, user_activities)
OR 1 <=FIND_IN_SET(14, user_activities)
AND `user_optin` =  '1'

如果我从查询中取出“OR”,则查询的 user_optin 部分将起作用。

无论如何,我是否可以使 user_optin 显式查找“1”条目,而不是“0”条目。

我没有设计这个数据库,我意识到 find_in_set 不是 MySQL 数据库查询的最佳方法。

干杯

最佳答案

() 中添加其他子句将它们与最终的AND分开.

SELECT
    `user_id`,
    `user_firstname`,
    `user_surname`,
    `user_email`,
    `user_type`,
    `user_optin`
FROM
    (`users`)
WHERE
    (
        `user_type` = 'Volunteer'
        AND 1 <= FIND_IN_SET(1, user_interests)
        OR 1 <= FIND_IN_SET(2, user_interests)
        OR 1 <= FIND_IN_SET(5, user_interests)
        OR 1 <= FIND_IN_SET(6, user_interests)
        OR 1 <= FIND_IN_SET(7, user_interests)
        OR 1 <= FIND_IN_SET(8, user_interests)
        OR 1 <= FIND_IN_SET(10, user_interests)
        AND 1 <= FIND_IN_SET(1, user_activities)
        OR 1 <= FIND_IN_SET(2, user_activities)
        OR 1 <= FIND_IN_SET(4, user_activities)
        OR 1 <= FIND_IN_SET(5, user_activities)
        OR 1 <= FIND_IN_SET(11, user_activities)
        OR 1 <= FIND_IN_SET(12, user_activities)
        OR 1 <= FIND_IN_SET(14, user_activities)
    )
AND `user_optin` = '1'

关于mysql - OR 子句后的 AND 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26730656/

相关文章:

php - 如何从数据库中获取 "redefine search"或更正 "misspelling"

mysql - 返回结果前更改mysql字段的值

php/mysql 帮助不需要输出错误

php - Laravel:通过请求验证更新数据不更新数据

sql - 如何合并具有不同列数的 MySQL 查询?

MySQL 查询针对可变日期范围返回的多个计数

php - 从mysql数据库在php中设置多个复选框

php - 搜索按钮在 php 和 jquery ajax 中不起作用后

php - 如何绑定(bind)参数年份和日期类型?

php - 如何在 laravel 的编辑表单中获取可选值