帮助sql命令..我想要列出已定义id的列表名称

时间:2010-10-08 10:02:08

标签: sql

我的表由列组成:id,name,job

我的行存有这些数据:

id: 1
name : jason
job: 11,12


id: 2
name : mark
job: 11,14

我希望使用write sql命令从该表中获取存储在作业列中的值为“14”的名称

那我该怎么做?

感谢

3 个答案:

答案 0 :(得分:2)

你可以这样做:

WHERE FIND_IN_SET(14, job)

但这确实不是正确的方法。正确的方法是规范化数据库并将job字段分隔到自己的表中。请查看此答案以获取更多信息:

PHP select row from db where ID is found in group of IDs

答案 1 :(得分:0)

SELECT 
       *
FROM   
       MyTable
WHERE 
       job LIKE '14,%' OR job LIKE '%,14' OR job LIKE '%,14,%'

编辑:感谢onedaywhen

SELECT 
       *
FROM   
       MyTable
WHERE 
       (',' + job + ',') LIKE ('%,14,%')

答案 2 :(得分:0)

您不应该在同一个字段中存储多个作业ID。您希望规范化数据模型。从名称表中删除“作业”列,并使用如下定义的第二个JOB表:

id | name_id | job_id

 1    1         11
 2    1         12
 3    2         11
 4    2         14

其中name_id是names表中条目的主要id('id')。

然后你可以这样做:

SELECT name_id, job_id FROM JOB WHERE name_id = 1;
例如,

。除了使您的数据存储更具可扩展性之外 - 您现在可以为每个名称分配无限数量的job_id - 执行查询也会快得多,因为所有条目现在都是整数并且不需要字符串处理。 / p>