我的表由列组成:id,name,job
我的行存有这些数据:
id: 1
name : jason
job: 11,12
id: 2
name : mark
job: 11,14
我希望使用write sql命令从该表中获取存储在作业列中的值为“14”的名称
那我该怎么做?
感谢
答案 0 :(得分:2)
你可以这样做:
WHERE FIND_IN_SET(14, job)
但这确实不是正确的方法。正确的方法是规范化数据库并将job
字段分隔到自己的表中。请查看此答案以获取更多信息:
答案 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>