• ベストアンサー

SQLのコマンドでif構文

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

  • MySQL
  • 回答数3
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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と''は別なのは理解いただいていますよね?

soccerrlove
質問者

お礼

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

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

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

soccerrlove
質問者

お礼

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

soccerrlove
質問者

補足

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

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> もし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; かな?

soccerrlove
質問者

お礼

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

関連するQ&A

  • sqlファイルをコマンドでインポート

    サーバーを移転しようと、xoopsのbluesbbを 構造:DROP TABLEを追加、AUTO_INCREMENT 値を追加する、テーブル名やフィールド名を逆クォートで囲む データ:バイナリフィールドでは 16 進数を使用する にチェックを入れ、sqでlファイルに保存しました。 しかし、カテゴリーとトピックスは別のデーターベースにインポートできましたが、bluesbb.sqlファイルは、データーが大きすぎて、phpMyadminではインポート出来ませんでした。 しかも、エクスポートしたデーターベースは誤って削除してしまったので、もはや、エクスポートしたsqlファイルからの復旧をコマンドを使って行うしかないと思います。 新しいサーバーは、sshを使える環境にあります。 このような場合、コマンドからインポートをすることは出来るでしょうか? また、出来るとしたら、やり方を教えて頂きたいのですが?

  • SQLコマンド

    SQLコマンドがわかりやすく検索できる 早引き辞典のようなサイトを知っている方 教えていただきたいのですが!!

  • phpmyadmin、コマンドプロンプト

    素人ながらの質問で恐縮です。 検索してもいまいちよく概念がわかっていないので、解答頂けたら幸いです。 質問 1、phpmyadminに関してですが、Xampp上からしか機能しないんですかね?つまりローカルって事です。 2、本物のサイトの管理において、phpmyadminは利用出来ますか? 3、色々なサイトがphpmyadmin上の解説ではなくて、コマンドプロンプト上からの操作の解説です。何故でしょうか?phpmyadminの方が簡単ですし、Sql文も打てますよね? 4、phpmyadminとコマンドプロンプトでは出来る事に違いがあるんでしょうか?

    • ベストアンサー
    • MySQL
  • SQLの統合コマンドについて

    phpMyAdminを使ってます。一つのデータベースに入ってる二つのテーブルを統合するため、機能でいうとFULL OUTER的なのがやりたいのですがphpMyAdminがそれをサポートしていないので、代わりにUNIONを使ってやろうと思ったら、二つのテーブルのカラムの数と型が同じでないとできないらしく、そこで止まってしまってるのですが、どうにかできるコードはないでしょうか? もともとは日本語のデータベース(1)と英語のデータベース(2)で分けていたのですが、英語(2)では入れなくてもいいデータがたくさんあり、カラムの数が2倍くらい変わってしまっているので、今から英語(2)の方を無理矢理日本語(1)に合わせるとなるとなんかデータが変になりそうなのでそれはまだやってないんですが。←無理矢理合わせるのはどうにも方法がなくて最終手段としてやりたいです。 回答よろしくおねがいします。 何か抜けている点があったら言ってください!

    • ベストアンサー
    • MySQL
  • SQL構文について教えて下さい!

    こんばんわ。 いつもお世話になっております。 ServletでIPアドレスを取得してデータベースに登録してあるデータであって尚且つ、AuthorityというカラムにAかBのどちらかがあるデータを抽出するSQLを作成しているのですが上手くいきません。 教えて下さい!お願いします。 作成中のSQL構文を途中から投稿致します。 String RemoteAdd = request.getRemoteAddr(); try { String sql = "SELECT * FROM Api where (Authority = 'A' OR Authority = 'B') AND IPAddress='"+ RemoteAdd +"'"; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery();

  • SQL*Plus:SPOOLコマンドでのSQL出力

    Oracle SQL*Plusで、SPOOLコマンドを使用すると、SQL実行の結果はファイルに出力されますが、実行したSQL自身が出力されません。 SETコマンドで制御できるのではないかと思いましたが、ちょっと見当たりませんでした。 何か方法はないでしょうか? よろしくお願いします。

  • access。コマンドラインでsql

    accessでコマンドラインからSQLを書いて、自分の書いたSQLが正しいのかどうか手軽に確かめたいと思っています。しかしgoogleで"コマンドライン access"などと調べてもそのような機能がヒットしてきません。アクセスでSQLを書いてクエリを作り手軽に検索結果を得るような機能は備わっているのでしょうか?

  • sqlエディタとは?

    Mysqlを勉強しているものです。 phpMyAdminから行っていますが、ふと気になりました。 sqlのエディタは世の中にどの程度あって、どの様な種類があるのか・・・。 質問 1、プロフェッショナルな方々は、コマンドプロンプトから行うのでしょうか?それともエディタを使いますか? 2、phpMyAdminは有名だと思いますが、鉄板ですかね?プロでも使いますか? 3、フリーのエディタだと、他に有力なものがあるとすれば、どのエディタでしょう? 4、有料のエディタは、それなりに機能が充実していますか? 5、有料は素人が手を出すものではありませんか? 6、有料だといくら程度が相場で、高いやつはいくら程度のモノまであるんでしょうか? 7、phpMyAdminだけで勉強するのはオススメできませんか? すいません。教えて下さい。

    • ベストアンサー
    • MySQL
  • ファイルから直接SQLを実行するコマンドを教えてください。

    SQL文を書いて保存してある C:\SQL\abc.sql というファイルがあるとします。 これを直接実行したいんですが、どういうコマンドを打てば良いのかわかりません。 誰かわかる方は教えてください。よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQLの書き方。。。

    アクセスで作成したAAAというテーブルとBBBというテーブルがあります。 AAAにはVBのフォームからテキストで入力したデータが入っています。 このデータをVBのコマンドボタンでBBBのテーブルに全て移したいのですが、どのようなSQLを書けばいいのか分かりません。 もし、お分かりになる人がいたら、回答お願いします。