アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPMyAdminのSQLのコマンドで、
もしdata001がNullだったら、data001に"1"というデータをいれる。
もしdata001がNullじゃないかつdata002がNullだったら、data002に"1"というデータをいれる。
このようなSQLのコマンドはどうやって打つのでしょうか。

回答よろしくおねがいします!

A 回答 (3件)

>1を入れる部分で文章みたいなのを入れてみたのですが、できませんでした。


>1の部分は数字じゃなきゃできないでしょうか?

はて?以下試してみてください
//元データ
create table tbl (id int ,data001 varchar(10) null ,data002 varchar(10) null);
insert into tbl values(1,'aaa','bbb'),(2,null,'ccc'),(3,'ddd',null),(4,null,null),(5,'','');

//更新
update tbl set data002=if(data001 is not null and data002 is null,'hoge',data002),data001=coalesce(data001,'fuga') where data001 is null or data002 is null;

ちなみにnullと''は別なのは理解いただいていますよね?
    • good
    • 0
この回答へのお礼

できました!!!
ありがとうございます!!

お礼日時:2014/12/06 13:41

create table tbl (id int ,data001 int null ,data002 int null);


insert into tbl values(1,10,10),(2,null,10),(3,10,null),(4,null,null);

だとして、id=1は無視、id=2はdata001を1に、id=3はdata002を1に
id=4はdata001を1、data002をnullのまま
とすると

update tbl set data002=if(data001 is not null and data002 is null,1,data002),data001=coalesce(data001,1) where data001 is null or data002 is null;

みたいな感じ
まぁ厳密にはwhere句はいらない気がしますが・・・
ただしこれを

update tbl set data001=coalesce(data001,1),data002=if(data001 is not null and data002 is null,1,data002) where data001 is null or data002 is null;

でやってしまうと、data001がnullでも先に1がセットされてしまうので、
つねにdata002は1になってしまうのでNG

この回答への補足

1を入れる部分で文章みたいなのを入れてみたのですが、できませんでした。
1の部分は数字じゃなきゃできないでしょうか?
テーブルのデータはint から varcharに変えてみました。

補足日時:2014/12/05 19:22
    • good
    • 0
この回答へのお礼

回答ありがとうございました!

お礼日時:2014/12/06 13:41

> もしdata001がNullだったら、data001に"1"というデータをいれる。


ifnullを使う
Select ifnull( data001, ”1” ) as data001;

後半は自信無い。
> もしdata001がNullじゃないかつdata002がNullだったら、data002に"1"というデータをいれ る。
data001がNullならどうするの?
Select ( CASE WHEN (isnull( data001 ) = false and isnull( data002 ) = true) THEN ”1” ELSE data002 END ) as data002;
かな?
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
見た感じこっちの方が難しそうで、まだ挑戦してないのですが、また今後時間があったらこっちの方法も試してみたいと思います!
ありがとうとうございました!

お礼日時:2014/12/06 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!