理想情況下,你不應該將數據存儲在一個逗號分隔的列表。你應該建立員工與技能之間的連接表:
CREATE TABLE employees (`e_id` int, `e_name` varchar(3));
INSERT INTO employees (`e_id`, `e_name`)
VALUES
(1, 'xyz'),
(2, 'abc');
CREATE TABLE skills (`s_id` int, `s_name` varchar(6));
INSERT INTO skills (`s_id`, `s_name`)
VALUES
(1, 'java'),
(2, 'php'),
(3, 'dotnet'),
(4, 'ruby'),
(5, 'python');
CREATE TABLE employees_skills (`e_d` int, `s_id` int);
INSERT INTO employees_skills
(`e_d`, `s_id`)
VALUES
(1, 1),
(1, 2),
(1, 3),
(2, 4),
(2, 1),
(2, 5);
然後,當你想從表中選擇您將使用:
select *
from employees e
inner join employees_skills es
on e.e_id = es.e_id
inner join skills s
on es.s_is = s.s_id
where s.s_name in ('java', 'ruby')
或者你可以使用OR
條款:
select *
from employees e
inner join employees_skills es
on e.e_id = es.e_id
inner join skills s
on es.s_is = s.s_id
where s.s_name = 'java'
or s.s_name = 'ruby'
請不要存儲數據的員工逗號分隔列表。您需要有一個單獨的表來將用戶與技能相關聯。 – Taryn
請顯示您的代碼。僅供參考,這是一個非常差的數據庫格式。你不應該在那裏存儲逗號分隔值。 – sashkello
該表的結構是什麼?以及我會寫什麼樣的查詢? – user1030128