我有一个选择语句,只要用户角色不在 scripts.sans_role_priority 字段中,我就会尝试构建脚本列表。如果只有一个条目进入该字段,这会很好用,但是一旦我添加多个条目,整个功能就会停止工作。我确定我忽略了一些简单的事情,只需要另一双眼睛。我们将不胜感激。
脚本:
SELECT *
FROM scripts
WHERE active = 1
AND homePage='Y'
AND (role_priority > 40 OR role_priority = 40)
AND (40 not in (sans_role_priority) )
ORDER BY seq ASC
scripts.sans_role_priority(varchar) = "30,40"中的数据。
额外的测试添加了这个: 当我将字段中的值切换为“40、30”时,选择有效。继续调试...
最佳答案
也许您正在寻找FIND_IN_SET() .
SELECT *
FROM scripts
WHERE active = 1
AND homePage='Y'
AND (role_priority > 40 OR role_priority = 40)
AND NOT FIND_IN_SET('40', sans_role_priority)
ORDER BY seq ASC
请注意,在某些字段中将“X,Y,Z”作为 VARCHAR 值表明您的数据库模式可能会得到改进,以便将 X、Y 和 Z 作为单独的值存储在相关表中。
关于mysql没有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7571322/