私の問題は:前のデータを失うことなく、SQLのみを使用してMySQLでセットタイプの列の特定の項目を有効/無効にする必要があります。セットタイプの列で設定可能な項目を1つだけ更新しますか?
擬似例:
UPDATE `table`
SET `setlist` = TOGGLE_SET(`setlist`, 'option_a`, true)
WHERE `id` = 1
LIMIT 1
OBS: TOGGLE_SET(列データ、文字列オプション、ブールモード)が偽の方法であり、存在していないが、理解だけのためです。
例を作成します。
CREATE TABLE `table` (
`id` INT(10) UNSIGNED NULL AUTO_INCREMENT,
`setlist` SET('option_a', 'option_b') NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB;
挿入例:
INSERT INTO `table` (`id`, `setlist`) VALUES (1, 'option_b');
同様の更新例:
UPDATE `table`
SET `setlist` = 'option_a,option_b'
WHERE `id` = 1
LIMIT 1
すべてです!
グレート "PS" を使用し、ありがとう。私はいくつかのオプションを無効にしたいのですか?たとえば、トグルを行います。オンの場合はオフ、オフの場合はオンを設定します。 –
ああ、その後、 'IF'を' SWITCH'や複数の 'IF ELSE IF ELSE'(静かな殺害と維持が難しい)に広げることができます – ajreal
これを解決するためのMySQLのネイティブメソッドはありませんか?タイプ "セット"はパターンがないようです。 –