質問: SQLiteなのですが、以下のようなテーブルがあるとします。 tb_fruit id, name_JP, name_EN 0, りんご, apple 1, みかん, orange 2, パイン, pineapple 「name_JPに値をINSERTしてみて、すでに値があればname_ENの値をSELECT、なければname_JPとname_ENに値をINSERT」というクエリーを1行で作りたいのですがわかりません。 name_JP, name_ENはそれぞれQNIQUE制約があります。 例えば ・「みかん」をINSERTしてみるとレコードがあるのでorangeをSELECTしたいです。 ・「バナナ」をINSERTしてみるとレコードがないのでバナナとbananaをINSERTしたいです。 そもそもSELECTとINSERTは1行では書けないのでしょうか? ★INSERTを実行した結果、値が存在した場合のみSELECT結果が得られればいいかんじです。 「INSERTが失敗した場合は、レコードが存在するので、そのレコードをSELECT」 「INSERTが成功した場合は、レコードが存在しない(レコードを挿入するのでそもそも値がわかっているためにSELECTしてもしなくてもいい)ので、そのままINSERTのみの実行だけでよい(SELECTしても構わないが)」 みたいな感じだと思うのですが・・・。 どうぞよろしくお願い致します。
回答: 存在しなければINSERT、存在するなら何もしない でよければINSERT OR IGNORE 存在しなければINSERT、存在するなら上書き でよければINSERT OR REPLACE あたりが使えると思います。 存在しなければINSERT、存在するなら現在の値をSELECTは一行では厳しいと思います。