所以我有这两个表:
training_course(注意“deptId”栏......)
id_dept
我正在尝试使用的查询:
SELECT dept FROM id_dept WHERE id IN (SELECT deptId FROM training_course WHERE id = '8')
但它不会给我我需要的结果。我可以为the courseName创建一个交叉引用表,但我想知道在这种情况下是否有一些技巧?
答案 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
);