【发布时间】:2017-05-16 10:39:51
【问题描述】:
我有两张桌子
在“用户”表中,每个用户都有许多技能。它们位于单个列上并被连接起来。 在“技能”表中,每个技能都有一个关联的标签。
碰巧有些用户拥有不再在“技能”表中引用的技能。
我想做的选择应该列出表用户的所有记录,这些记录包含表技能中不再引用的技能。
我试图做类似的事情:
SELECT user_id
FROM USERS LEFT JOIN SKILLS
ON USERS.skills = SKILLS.skill_id
WHERE SKILLS.skill_id = null
但是,ON USERS.skills = SKILLS.skill_id 语句不符合我的需求。列 USERS.skills 包含连接的技能 ID。
我试图用 ON USERS.skills LIKE SKILLS.skill_id 替换那个位,但仍然感觉不对,查询会永远运行......
请您赐教。
【问题讨论】:
-
这就是为什么你应该总是规范化
-
基本上你需要规范化
USERS,然后对结果进行左连接。这里介绍了规范化:stackoverflow.com/questions/17308669/… -
感谢您的回答。我对 MySQL 的记忆太生疏了,而且绝对不是最新的。规范化似乎确实是要走的路,这很棒!我要玩这个概念。
标签: mysql left-join sql-like denormalized