所以我有这两个表:
training_course(注意“deptId”列...)
id_部门
我尝试使用的查询:
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/