私はあなたの質問があなたのcard
テーブルに現在色のセットを含むと呼ばれる列があることを意味することを理解していますcasting cost
、例えば'red,green'
またはそしてあなたはそれぞれの可能な色が?'blue,orange,yellow'
にあるかどうかを示すブール列を生成するクエリを探していますcasting cost
もしそうなら、MySQLのFIND_IN_SET()
関数はあなたが求めているものをあなたに与えるはずです:
SELECT *,
FIND_IN_SET('red', `casting cost`) > 0 AS red,
FIND_IN_SET('blue', `casting cost`) > 0 AS blue,
FIND_IN_SET('green', `casting cost`) > 0 AS green,
FIND_IN_SET('orange', `casting cost`) > 0 AS orange,
FIND_IN_SET('yellow', `casting cost`) > 0 AS yellow
FROM card
そのような列を含めるようにテーブルを永続的に変更する場合:
ALTER TABLE card
ADD COLUMN red BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN blue BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN green BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN orange BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN yellow BOOLEAN NOT NULL DEFAULT FALSE
UPDATE card SET
red = FIND_IN_SET('red', `casting cost`) > 0,
blue = FIND_IN_SET('blue', `casting cost`) > 0,
green = FIND_IN_SET('green', `casting cost`) > 0,
orange = FIND_IN_SET('orange', `casting cost`) > 0,
yellow = FIND_IN_SET('yellow', `casting cost`) > 0