mysql没有问题

标签 mysql select

我有一个选择语句,只要用户角色不在 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/

相关文章:

mysql - SQL case 语句 - 根据另外 2 个表从第三个表中选择值

mysql - 为什么这条 SQL 语句不起作用?是我的 MariaDB 服务器有问题吗?

mysql - SQL合并不同行的结果,按case合并

SQL 按 3 列分组,具有特殊功能

c# - 如何检查选中了dataGridView中的哪个单元格?

php - 对mysql进行查询时出现问题-给定 bool 值

JQuery 刷新选择框

java - JPA - 语法错误解析 SELECT GREATEST(c.field, mc.field), LEAST(c.field, mc.field) FROM table

mysql - 选择最大字段值或零值

php - laravel 5.4 嵌套 foreach 循环中的查询重复项