Mysql 单元包含需要格式化才能用于 IN 语句的包含列表?

标签 mysql sql database

所以我有这两个表:

training_course(注意“deptId”列...) enter image description here

id_部门

enter image description here

我尝试使用的查询:

SELECT dept FROM id_dept WHERE id IN (SELECT deptId FROM training_course WHERE id = '8')

但它不会给我我需要的结果。我可以为每个 courseName 制作一个交叉引用表,但我想知道在这种情况下是否有一些技巧?

最佳答案

使用find_in_set()来满足您的查询。然后研究连接表并了解为什么在字符串中存储整数 id 是一个非常非常糟糕的主意。 SQL 具有用于存储事物列表的出色数据结构。它被称为表,而不是字符串。

你可以做你想做的事:

SELECT dept
FROM id_dept
WHERE find_in_set(id, (SELECT deptId FROM training_course WHERE id = '8')) > 0;

或者:

SELECT dept
FROM id_dept d
WHERE EXISTS (SELECT 1
              FROM training_course tc
              WHERE tc.id = '8' and
                    find_in_set(d.id, tc.deptId) > 0
             );

关于Mysql 单元包含需要格式化才能用于 IN 语句的包含列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28288891/

相关文章:

php - 按数字排序表并获取列表编号

MySQL - 过滤条件的增加是否会增加查询执行时间?

mysql - JBoss Wildfly 10 MYSQL 驱动程序安装问题

mysql - 在 MySQL 中获取不存在于另一个表的两列中的行

sql - 如何将映射表中的几行汇总为列?

python - 如何使用python将DataFrame中的列插入到具有可变列数的数据库表的新列中

php - 显示数据库中的用户记录

mysql 表与 max() 连接

sql - 如何从多对多表中选择一条记录,其中一个 ID 存在于一个表中,而另一个表中不存在?

mysql - 同一类型的多个表的数据库设计