これに関する主な問題は、@ interrobangが言ったこと、つまりデータを表現する方法だと思います。
表示するこのテーブルXが各個人のリストイテンである場合、個人IDの列と、アイテムIDの別の列、および各個人の複数のイテンを表す複数の行が必要です。このようにすることで、検索ははるかに高速で使いやすくなり、将来的に維持できるようになります。
SQLフィドル
MySQL 5.5.30スキーマのセットアップ:
CREATE TABLE person (
id int auto_increment primary key,
name varchar(20)
);
CREATE TABLE item (
id int auto_increment primary key,
name varchar(20)
);
CREATE TABLE person_item (
id int auto_increment primary key,
person_id int,
item_id int
);
ALTER TABLE person_item ADD UNIQUE (person_id,item_id);
INSERT INTO person(id,name) VALUES
(1, 'John'),
(2, 'Mary'),
(3, 'Oliver');
INSERT INTO item (id,name) VALUES
(1,'Pen'),
(2,'Pencil'),
(3,'Book');
INSERT INTO person_item (person_id,item_id) VALUES
(1,1),
(1,3),
(2,2),
(3,1);
クエリ1:
select p.name from person_item pi, person p, item i
where pi.person_id = p.id
and pi.item_id = i.id
and i.name LIKE 'Book%'
結果:
| NAME |
--------
| John |