文字列フィールドに「タグ」の区切りリストを含めることは、MySQL のようなリレーショナル データベース管理システムをうまく利用することにはなりません。
別のテーブルを作成する方がはるかに賢明です。それを と呼びましょうThingTags
。これは、既存のテーブル内のものをタグに関連付けます。
CREATE TABLE ThingTags (
ThingID INT NOT NULL,
TagID INT NOT NULL,
FOREIGN KEY (ThingID) REFERENCES `table` (ID)
);
このFOREIGN KEY
制約は、 (where )ThingTags
に対応するエントリがある場合にのみレコードが存在できることを MySQL に伝えます。table
ThingTags.ThingID = table.ID
したがって、このテーブルには、「もの」ごとに複数のレコードが存在します。
INSERT INTO ThingTags VALUES (1,1), (1,7), (1,45), (2,1), (2,34);
クエリは次のようになります。
SELECT `table`.*
FROM `table` JOIN `ThingTags` ON `ThingTags`.`ThingID` = `table`.`ID`
WHERE `ThingTags`.`TagID` IN (1,2,7,34,45);