我正在尝试运行其中包含“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/