【发布时间】:2014-02-03 22:10:54
【问题描述】:
我的数据库中有这张表:
+----+-----------+
| ID | JOB |
+----+-----------+
| 1 | Developer |
| 2 | Designer |
+----+-----------+
我想运行这个查询,通常会得到 ID : 2
select j.ID from jobs j where 'Designer' in ( j.JOBS )
不幸的是,当我喜欢这张桌子时它不起作用
+----+------------------------------------------+
| ID | JOB |
+----+------------------------------------------+
| 1 | Developer |
| 2 | Designer,administrator,analyst,Developer |
+----+------------------------------------------+
因为j.JOBS的值是字符串:'Designer,administrator,analyst,Developer'
不喜欢这样用逗号分隔的多重值:'Designer','administrator','analyst','Developer'
那么,我该如何解决这个问题,我希望我能很好地解释我的问题。谢谢
【问题讨论】:
-
首先,不要在一个字段中存储多个值。规范化您的数据,并制作一个链接表。其次,如果您必须这样做,请使用
FIND_IN_SET('Designer', j.JOBS)(参见:stackoverflow.com/questions/4155873/find-in-set-vs-in)。 -
Rocket Hazmaz 是对的。您应该有一个工作表(工作列中只有一个工作)、一个人员表和一个 people_job 连接表。
-
@RocketHazmat 谢谢。是的,我知道我必须在表之间使用链接,但就我而言,我必须将多个值存储在一个字段中。