Mysql单元格是否包含需要格式化以用于IN语句的列表?

时间:2015-02-02 23:40:37

标签: mysql sql database

所以我有这两个表:

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

id_dept

enter image description here

我正在尝试使用的查询:

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

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

1 个答案:

答案 0 :(得分:1)

使用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
             );