これは不必要に複雑なクエリである、あなたは本当に
をこれを設定する外部キーと追加のテーブルを使用する必要があります。しかし、あなたが同じスキーマを維持したい場合は、ハックを使用することができます。いくつかの例についてはthis postをチェックしてください。私はあなたがPHPからこれらを実行している場合、あなたはちょうどあなたが好きなだけのIDが含まれるように正規表現を変更する必要が
Create Table job_post (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
skill VARCHAR(50),
city VARCHAR(50)
);
INSERT INTO job_post (name,skill,city)
VALUES ('job1','2,3','1,2'),
('job2','2,3,12,13','1');
SELECT * FROM job_post WHERE CONCAT(',', skill, ',') REGEXP ',(1|3),'
OR CONCAT(',', city, ',') REGEXP ',(1|3),';
だから、それを実装するために、次を使用しています。上記のクエリは両方の行を返します。
このクエリ
SELECT * FROM job_post WHERE CONCAT(',', skill, ',') REGEXP ',(1),' OR CONCAT(',', city, ',') REGEXP ',(2|3),';
のみJOB1を返します。あなたはこの例で遊ぶことができますhere
[複数の検索文字列を持つMySQL find \ _in \ _set]の可能な複製(http://stackoverflow.com/questions/5015403/mysql-find-in-set-with-multiple-検索文字列) – alex9311
スキル欄に** 1,3 **、都市欄に** 1,3 **と表示されていれば両方の行を返したいと思っています。** 3 ** idはスキル欄にあり、 * 1 ** idは都市の列にあります。 –