mysql Ver 8.0.19
table name
id | kyouka | score |
---|---|---|
1 | 国語 | 10 |
2 | 算数 | 20 |
mysql
1UPDATE name SET kyouka = CONCAT(kyouka, '算数'),score=100 where id =1;
のようにすれば、
table name
id | kyouka | score |
---|---|---|
1 | 国語算数 | 100 |
2 | 算数 | 20 |
となると思うのですが、もし既にのその文字列が含んでいたら何もしないようにしたいです。
上の状態で、上の状態でid =1 に '算数'を追加する場合は既にあるので何もしない。'社会'なら'国語算数社会'のようにはどのようにすればできるのでしょうか?
scoreは毎回更新したいです。
mysql
1 UPDATE name 2 SET kyouka = (if kyouka not like ('%社会%') then 3 CONCAT(kyouka, '社会') 4 else 5 CONCAT(kyouka, '') 6 ) 7 ,score= 8 8 where id =1
エラーは以下でした。
SQLエラー [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'kyouka not like ('%社会%') then CONCAT(kyouka, '社会') else CONCAT(kyou' at line 2
希望はこうしたいです
table name
id | kyouka | score |
---|---|---|
1 | 国語算数社会 | 8 |
2 | 算数 | 20 |
追記
指摘をいただき、case を使ってもできないです (T . T)
UPDATE buzz.test SET kyouka = ( CASE WHEN not like ('%社会%') then CONCAT(kyouka, '社会') ELSE CONCAT(kyouka, '') END) ,score= 8 where id =1
SQLエラー [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like ('%社会%') then CONCAT(kyouka, '社会') ELSE CONCAT(kyouka, '') END) ' at line 2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 10:07
2020/06/17 10:14