SQL文でスコアを更新する方法

このQ&Aのポイント
  • SQL文でスコアを更新する方法について教えてください。
  • PythonからSQLite3のDBに接続して使用しています。
  • "bbb"さんのスコアを1増やすためのSQL文を教えてください。
回答を見る
  • ベストアンサー

SQL文の得意な方、教えてください。

SQL文の得意な方、教えてください。 ステートメントに関しての話のため、言語から云々とはここでは関係ないと思いますが 使用環境ということで、とりあえずpythonからsqlite3のDBに繋いで使っています。 たとえば、以下のテーブルがあります。  STRING  INTEGER   (name) (score) 1 "aaa"        3 2 "bbb"       10 :  :       : ここで、"bbb"さんのスコアーを+1 (= 4)にしたい場合。 私の場合は、SELECT文で"bbb"さんを探してから、 scoreを取り出して、3を4にして、update文で 更新することしか考えていませんでしたが、 SQL文 一発で、それを解決してくれる方法はありますでしょうか? 初歩的な質問でしたら、すいませんです。。

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

  • ベストアンサー
回答No.1

こんばんは。 UPDATE テーブル SET score = score + 1 WHERE name = 'bbb' こういう事?

peekpoke
質問者

お礼

ずばやい回答ありがとうございます。w 助かりました。

関連するQ&A

  • SQL文がかけません

    次のようなテーブルが有ります client_code , client_name, closed_day , receipt(入金額) ,sales(今月請求額) ,collection_date入金予定月 1 , aaa  , 201804 , 10000 , 30000 , 201806 1 , aaa  , 201805 , 20000 , 40000 , 201807 1 , aaa  , 201806 , 30000 , 50000 , 201808 2 , bbb  , 201804 , 40000 , 50000 , 201805 2 , bbb  , 201805 , 50000 , 60000 , 201806 2 , bbb  , 201806 , 60000 , 70000 , 201807 3 , ccc  , 201804 , 70000 , 30000 , 201807 3 , ccc  , 201805 , 80000 , 40000 , 201808 3 , ccc  , 201806 , 90000 , 50000 , 201809 ・ ・ ・ ここから下のような表を作りたいと思っています。 6月入金管理表 会社コード , 入金予定額 , 売上月 , 実績入金額 1 , aaa , 30000  , 201804 , 30000 2 , bbb , 60000 , 201805 , 60000 3 , ・ ・ こんな感じで各月での入金予定額(aaaの場合2ヶ月前の請求額、bbbは1ヶ月前) と、実際の入金額を比較したいと思っています。 しかし、SQL文がまったくわかりません。 SELECT 文中にCASE WHENを使って頑張ってみたんですが 1 , aaa , 30000  , 201804 ,  0 1 , aaa ,  0   , 201806 , 30000 のように、2行に分かれてしまいます。 現在のSQL文は汚いですが以下の感じです。 SELECT client_code , client_name , closed_day, CASE WHEN collection_date ='2018/06' THEN sales ELSE 0 end as '入金予定額' , CASE WHEN closed_day ='2018/06' THEN receipt ELSE 0 end as '入金額' FROM Data WHERE closed_day ='2018/06' OR collection_date ='2018/06' GROUP BY client_code , client_name ,closed_day , collection_date ,sales ,receipt ORDER BY client_code どなたかお助けください

  • sql文のヵウント関数について

    sql文のcountを使い、humanテーブルのレコード件数を取得し出力したいのですが、 Object of class SQLite3Result could not be converted to string in のエラーが出て困っています。 (1)humanテーブルのレコード件数を表示する方法を教えてください。(sql文はうまく動いているのが確認できているので、表示する方法を教えていただきたいです。データベースの接続も正常です。) (2)sqlの出力って配列のみなのでしょうか? <?php // 変数の初期化 $db = null; $query=null; $con =null; $db = new SQLite3("test.db"); $res = $db->query ($sql); // データの取得 $query = "SELECT count (id) from human"; //クエリを実行 $con = $db->query($query); //データの件数を表示する print $con; ?>

    • ベストアンサー
    • PHP
  • 【SQL】SELECT文

    こんにちは。OracleのSQLを勉強中の者です。 SELECT文について質問させてください。 下記のテーブルから購入フラグがすべて「1」のユーザ名を抽出したいのですが、SQL文をご教授いただけますでしょうか。 テーブル名:商品購入テーブル ユーザ名   商品名    購入フラグ ---------- ---------- -------------- 001      AAA       1 001      BBB       1 001      CCC       0 002      DDD       1 003      AAA       1 003      EEE       1 004      CCC       0 このテーブルからですと、002と003のユーザが抽出される形となります。 以上、よろしくお願いいたします。

  • SQL文について

    こんにちは! 皆様に教えて欲しいことがあります。 DBの中のデータで、一番年齢が高い人の名前を取得してくるときってどんなSQL文を書けばいいんでしょうか? 一番高い年齢を取得、なら select Max(年齢) from DB でいいと思うんですけど、一番年齢の高い人の名前、となると、どうやってとってくるのかわかりません。 where文で「having max(年齢)」ってやったんですけど、エラーが出て実行できませんでした。 今作ってるSQL文は、DB二つから他の条件も含めてselectしているので、他の理由でエラーになってるのかもしれませんが・・・。 職場にSQLがわかる人がいないので、誰にも聞けません。 もしわかる方がいらっしゃいましたら、教えてください。 宜しくお願いします。

  • SQL(SQLite)である範囲のデータのみを取り出す

    SQL(SQLite)である範囲のデータのみを取り出す 実行環境はPerl5.8.9 + DBI-1.60.7、DBはSQLite です。 あるSELECT文によって十分多い(例えば100件以上の)データが取り出せるとして、 そのうち例えば41~50件目の10件だけを取り出したい場合、 どのようにするのが良いのでしょうか。 自分が思いつくのは、SELECT文をprepare,executeした後にfetchrow_arrayで 1~40件目を空読みしてから目的の10件を読み込むというやり方ですが、 もしSQL文だけで目的のデータのみ取り出せるやり方があれば教えてください。

  • SQL文について質問があります。

    PostgreSQLのSQL文で質問があります。 kekktaテーブルの構成 ---------------------- name:varchar(64) score : int 4 day : date ---------------------- 現在kekkaテーブルには以下のレコードが格納されています。 ------------------------------- yamada| -2|2003-04-30 yamada|-16|2003-05-01 yamada| 3|2003-05-02 yamada|-23|2003-05-02 honda |-12|2003-05-10 yamada| 12|2003-05-15 yamada| -6|2003-05-20 yamada| -8|2003-06-01 ------------------------------- このレコードで 2003年5月のyamadaさんのレコードの最新日付からの scoreの合計を取得したいと考えています。 ---------------------------------- select name, sum(score) from kekka where name='yamada' and day like '2003-05%' group by name offset 0 limit 4; (このSQLはもちろんうまくいきません) ---------------------------------- <出力したい結果> name | sum(score) --------------------- yamada | -14 です。 SQLがうまくできません。 宜しくお願いいたします。

  • 重複レコードの抽出について

    以下のようなテーブルからmailが重複していてnameの値が全て同じ値を持つレコードを取得するためのSQL文を教えてください。 mail | name ----------- aaa | 01 aaa | 01 aaa | 01 bbb | 02 bbb | 02 bbb | 01 ccc | 01 ccc | 01 ccc | 02 select * from test where mail in (select mail from test where mail group by mail having count(mail)>1) 上記のSQL文だと以下のデータが取得されてしまいます。 ↓ mail | name ----------- aaa | 01 ○ aaa | 01 ○ aaa | 01 ○ bbb | 02 × bbb | 02 × ccc | 01 × ccc | 01 × ○印のみ取得したいのですが、 SQL文をどのように修正すればよいのでしょうか。 よろしくお願いいたします。

  • すっきりとしたSQL文にしたいのですが

    Oracle9iにてテーブルのデータを更新しようと思っています。 目的としてはAAAのカラムa1とBBBのカラムb1が同一なレコードである場合、 AAAのa2にBBBのb2を更新したいのですが、 <条件> AAA:テーブル1 BBB:テーブル2 a1:CHAR b1:CHAR a2:VERCHAR b2:VERCHAR すべて必須で桁数は10 UPDATE AAA SET AAA.a2 = ( SELECT BBB.b2 FROM BBB WHERE AAA.a1 = BBB.b1) WHERE AAA.a1 = ( SELECT BBB.b1 FROM BBB WHERE AAA.a1 = BBB.b1) ; いまはこんな無駄の多そうなSQLしか分かりません。 この他にも条件が2つ追加される予定なので もっとすっきり更新できる方法を教えていただけませんでしょうか? よろしくお願いします。

  • 【再】2)-SQL文の書き方を教えてください。

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=694458 先日この問題で投稿しましたが、未完成のため、再度要望を整理し、ご指導をお願いいたします。 W←tabel名:名称、日付、数量 明細データ:     名称   日付    数量 A   2003/10/01   200 B   2003/10/03   500 C   2003/10/10   4000 A   2003/10/03   200 A   2003/10/03   100 C   2003/10/15   100 B   2003/10/15   300 C   2003/10/15   50 B   2003/10/15   60 求めているクエリーのイメージ:    2003/10/15 時点 ================================================ 名称     当日数量     当月数量     A          0       300     B         360       860     C         150       4150 ------------------------------------------------- 先日教えてもらったSQL文、希望のクエリーを作れないです。 -------------------------------------------------- select 名称, sum(AAA) as 当日数量, sum(BBB) as 当月数量 from ( select 名称, 0 as AAA, sum(数量) as BBB from W where 日付 >= #2003/10/01# and 日付 <= #2003/10/15# group by 名称 union select 名称, sum(数量) as AAA, 0 as BBB from W where 日付 = #2003/10/15# group by 名称 ) group by 名称; このSQL文は、2番目のSelectのところでエラーが出る (From句の構文エラーです) -------------------------------------------------- 後、Accessバージョンによって、SQL文が変わるでしょうか?当方は、Access97を使っている。 ご指導をお願いいたします。

  • Oracl[10g]の SQL文について(No.6)

    何度も恐縮です。前回の質問(例題)が間違えていました。 本当に申し訳ございません。改めて、お願いしたい次第です。 Oracl[10g]の SQL文について、教えて下さい。 [C1]テーブルに [CODE](key) と [NAME]フィールドがあるとします。 内容は、 A-1 NAME-1 A-2 NAME-2 A-3 NAME-3 と、します。 [B]テーブルに [CODE](key) と [NOUKI](key) と [KIN] フィールドがあるとします。 内容は、 A-1 2005/01/01 100 A-1 2005/01/02 200 A-2 2005/01/01 300 A-2 2005/01/10 400 A-2 2005/12/10 500 と、します。 [C2]テーブルに [CODE2](key) と [NAME2] と [CODE] フィールドがあるとします。 内容は、 AAA NAME2-1 A-1 BBB NAME2-2 A-2 CCC NAME2-3 A-3 と、します。 [C3]テーブルに [CODE2](key) と [NO](key) と [KIN2] フィールドがあるとします。 内容は、 AAA 1 200 AAA 2 300 BBB 1 10 BBB 2 20 BBB 3 30 と、します。 結果が、 A-1 NAME-1 300[B]テーブルの合計 500[C3]テーブルの合計 A-2 NAME-2 1200[B]テーブルの合計 60[C3]テーブルの合計 と、なる様にする為には、どういうSQL文を書けば良いのでしょうか ? 前回、教えて頂いた例を参考に頑張っているのですが、 まだ、私には難しすぎる様です。 よろしくお願い致します。