データベースの正規化が不十分です。最善の方法は、テーブルを作成することですKeyboards
CREATE TABLE Keyboards
(
Keyboard_ID INT AUTO_INCREMENT,
KeyBoardName VARCHAR(25),
CONSTRAINT kbrd_pk PRIMARY KEY (Keyboard_ID),
CONSTRAINT kbrd_uq UNIQUE(KeyboardName)
)
CREATE table Tags
(
ID INT AUTO_INCREMENT,
Keyboard_ID int,
CONSTRAINT tags_pk PRIMARY KEY (ID),
CONSTRAINT tags_pk FOREIGN KEY (keyboard_ID) REFERENCES keyboards(keyboard_ID)
)
次に、表を参照keyboards.id
しtags
ます。
次に、このクエリを実行できます。
SELECT id,
FROM tags a
INNER JOIN keyboards b
ON a.keyboard_id = b.keyboard_ID
WHERE b.keyboardName IN ('mountain','picture','space')
GROUP BY ID
HAVING COUNT(DISTINCT b.keyboardName) = 3
しかし、あなたの質問に答えるために、あなたは単にこれをすることができます
select *
from tags
where keyboards like concat('%','mountain','%') AND
keyboards like concat('%','picture','%') and
keyboards like concat('%','space','%')