複数条件の完全一致のSQLの書き方を教えてください

このQ&Aのポイント
  • androidのアプリケーション開発でSQLiteを利用しています。data、time、comの3つが完全一致するレコードを返すSQLの書き方を教えてください。
  • androidアプリ開発で使っているSQLiteで、data、time、comが同じ値のレコードを取得するSQLの書き方を教えてください。
  • SQLiteを利用したandroidアプリケーション開発で、data、time、comが完全一致するレコードを取得するためのSQL文を教えてください。
回答を見る
  • ベストアンサー

複数条件の完全一致

お世話になっております。 androidのアプリケーションを開発しており、 SQLiteを利用しているのですが、 複数条件の完全一致のSQLの指定がわからないため、 質問させていただきます。 ●テーブル名 houmon id| date | time | com ------------------ 1|3/10 |17:00 |goo 2|3/10 |18:00 |okwave 3|3/11 |17:00 |goo 4|3/11 |18:00 |okwave 上記のようなテーブルがあり、 そのうちのdata、time、comの3つが完全に一致するレコードを返す SQLの書き方を教えて下さい。 すいませんが、よろしくお願いします。

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

> 「data、time、comの3つが完全に一致する」 三つの項目がそれぞれ指定された値に一致するものを取得するという事でしょうか? そうだとすると WHERE 句にそれぞれの条件を AND で繋いで並べれば良いかと。 例) ------------------------------------ SELECT * FROM houmon WHERE date = '3/10' AND time = '17:00' AND com = 'goo'; ----------------------------------------

fcknsho
質問者

お礼

初歩的な質問ですいませんでした。 おかげさまで実装できました。 ありがとうございます。

関連するQ&A

  • 複数カラムとの一致数の抽出ができません

    同一のデータベース内にある複数のカラムとの一致数を指定し、条件を満たしたものを抽出したいと思っていますが、SQL文が思いつかず困っています。どなたかよい知恵を授けてください。 [ID] N1 , N2 , N3 , N4 , N5 , N6 [01] 11 , 16 , 21 , 26 , 31 , 36 [02] 16 , 18 , 25 , 26 , 29 , 31 ↑というテーブルがあったとき、 例えば(11,16,21,25,31,34)という数値(A)を与えて、N1~N6に入っている数値と比較したとき、4個一致した行を抽出したい時はID=01を返し、3個一致した行を抽出したい時はID=02を変えすSQLはどういうものにすればいいでしょうか? 一致する個数のみに着目し、一致する数値はどれでもいいものとします。 ちなみに可能であれば、IDは300程あるので、できれば処理時間の関係上スマートにしたいと思っています。 ニュアンスとしては SELECT ID FROM table WHERE (SELECT count(*) FROM table WHERE (n1,n2.n3.n4.n5.n6) IN (11,16,21,25,31,34))=4; のようにしたいと思いましたがINの使い方の問題でしょうか、エラーが帰ってきます。

  • 条件付きでデータの置換と新規挿入

    教えてください。 id(主)|u_id|date|field1|field2| と言うフィールドを持つテーブル[tbl_1]があります。 ポストするデータのu_idとdateがテーブルのレコードと一致する場合、 field1及びfield2のデータを置換 若しくは、挿入し、 u_idとdateが一致しない場合、新しいレコードを挿入したいと 思うのですが、これをひとつの命令文として行うことはできるでしょうか。 以下、試してみたことです。 replace into tbl_1(field1,field2) value(1111,2222) where u_id='1' and date='20110420' 上記では、シンタックスエラーが返ってきました。 次に、 replace into tbl_1(u_id,date,field1,field2) value(1,20110420,1111,2222) としたところ、u_idとdateが一致するレコードがあっても、 新規レコードとして挿入されました。 1回の命令文で処理を行いたいと思うのですが、 やはり、処理は分けた方が良いのでしょうか。 ご回答よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • MySQLでテーブル一致条件に正規表現は使用可能?

    ・MySQLで一致条件に正規表現を使用することは出来ますか? ・もし出来るとすればどのようにすれば良いでしょうか? ■やりたいこと ・aテーブルのurlカラム内容が「/color/★★」だったら「/color/」以下の★★を抽出して、bテーブルのidと一致したレコードを抽出したい ・aテーブルの★★と、bテーブルのidカラムが一致しているレコードが欲しい ・aテーブルのurlカラムには「/color/58」「/color/26」「/hoge/■■」などが入っています SELECT *     FROM a      LEFT JOIN a.url = b.id     REGEXP '^(/color)'?     where a.★★ = b.id

    • ベストアンサー
    • MySQL
  • 複数のtableから条件に一致するデータを取り出す方法

    複数のtableから条件に一致するデータを取り出す方法 2つのテーブルから条件に一致するレコードだけを取り出したいです。 MySQLのバージョンは5.0.77です。 ------------------------------------------------------------------- 「テーブル1」 [itemNo] int型 auto_increment [itemName] varchar型 itemNo itemName    flag 1    apple     0 2    orange     1 3    grape     0 4    strawberry   1 5    melon     1 「テーブル2」 [logNo] int型 auto_increment [itemNo] int型 [date] date型 [itemLog] int型 logNo itemNo date    itemlog 1   4   2010/07/28  1 2   2   2010/07/28  2 3   2   2010/08/03  1 4   1   2010/08/04  1 5   4   2010/08/05  2 ----------------------------------------------------------------------- ・テーブル1の「itemNo」とテーブル2の「itemNo」は同じ番号が入ります。 ・テーブル2は1商品に対する履歴用のテーブルなので、同じ「itemNo」が複数存在します。 「検索条件」 1.テーブル1の[itemNo]とテーブル2の[itemNo]が一致 2.テーブル1の[flag]が1のデータのみ表示 2,テーブル2に同一の[itemNo]が複数あった場合、[logNo]が新しい最新のものを取り出す 3.テーブル2に[itemNo]が存在しなくても、flagが1なら取り出す SELECT * FROM `テーブル1` LEFTJOIN `テーブル2` ON (テーブル1.itemNo = テーブル2.itemNo) WHERE `flag` == 1 ORDER BY テーブル1.itemNo DESC; 「実行結果」 itemNo itemName   flag logNo itemNo date    itemlog 2   orange    1   2   2   2010/07/28 2 2   orange    1   3   2   2010/08/03 1 4   strawberry  1   1   4   2010/07/28 1 4   strawberry  1   5   5   2010/08/05 2 5   melon     1    「求める実行結果」 itemNo itemName   flag logNo itemNo date    itemlog 2   orange    1   3   2   2010/08/03 1 4   strawberry  1   5   5   2010/08/05 2 5   melon     1    ご存知の方がいましたら、教えていただけると幸いです。 何卒よろしくお願い致します。

  • MySQL 複数フィールドで不一致の抽出

    ジャンル  id ジャンル名 日 数 id ----+---------------+--------------+---------+------- 001 ワンピース 20110518 10 a001 001 ワンピース 20110518 6 a002 002 アクセサリー 20110518 5 b002 仮に、このようなデータがあったとします。 数時間後には、↓のように変更がかかって送られてきます。 001 ワンピース 20110519 7 a001 001 ワンピース 20110518 6 a002 002 アクセサリー 20110519 9 b002 データ配布元の問題で、内容が更新された時点で、まだデータが確定していないものは、前日のデータが混ざって送られてきます。 この仕様を改良することは、残念ながら全く不可能です。 しかし、このデータをそのままテーブルに取り込んでしまうと、当然、2行目が重複してテーブルに収まってしまい、その後のデータ抽出に支障がでます。 例の場合でいえば、既に存在している2行目のデータを捨て、1行目と3行目のみを抽出する方法を探しています。 そこで、全部のデータを持つのをテーブル1とし、新しく着いたデータ(0519を含む方)をテーブル2に一時保管て、 SELECT テーブル2.ジャンルid, テーブル2.ジャンル名, テーブル2.日, テーブル2.数, テーブル2.ID FROM テーブル2 LEFT JOIN テーブル1 ON (テーブル2.ID = テーブル1.ID) AND (テーブル2.数 = テーブル1.数) AND (テーブル2.日 = テーブル1.日) AND (テーブル2.ジャンルid = テーブル1.ジャンルid) WHERE (((テーブル1.ジャンルid) Is Null)); と不一致SQLをAccessで行ったところ、1行目と3行目までが抽出できました。 ジャンルid、日、数、id が一致しないものを取りだすという不一致クエリの改造です。 ところが、同じSQLを、本番であるMySQLで行ったところ、データが抽出できす、反応が無くなってしまいます。 サンプルでは件数を絞りましたが、実際には1回分のデータが1万件近くあり、さらにメインテーブルは60万件ほどになるため、量が多すぎるためとも思いますが、4時間経ってもクエリの結果が返って来ないのは、MySQLとなにか合わないのではないかと思います。 MySQLで、上記と同じく、ジャンルid、日、数、id の全てが一致しないデータを抽出する事は可能でしょうか? ちなみに、MySQLテーブルでは、idの前にインクリメントのフィールドを置き、インデックスもインクリメントのフィールドで作成してあります。 よろしくお願いします。

  • 複数条件の設定

    お世話になっております。 よろしくお願い致します。 表:TABLE SN CD NO DATE --------------------- 101 A1 1 2007/12/2 101 A2 2 2007/12/4 201 A1 1 2007/12/7 201 A2 2 2007/12/9 201 A2 3 2007/12/10 301 A1 2 2007/12/3 301 A2 3 2007/12/8 このようなテーブルがあったとして、 SNごとに、CDが'A2'のNOを取得したいです。 このとき、A2が複数行あるときはDATEの新しいほうのNOを 取得したいと思います。 SN CD NO DATE --------------------- 101 A2 2 2007/12/4 201 A2 3 2007/12/10 301 A2 3 2007/12/8 取得したい表はこのような感じです。 なのですが、どうもうまくいきません。 SELECT MAX(DATE) FROM TABLE WHERE CD='A2' GROUP BY SN これを使っていろいろやってみたのですが できませんでした。 SQLをどのように書けばいいのでしょうか? どうかよろしくお願いします。 SQL Server2005です。

  • 2つのテーブルを比較して、不一致レコードを抽出するSQL文

    2つのテーブルを比較して、不一致レコードを抽出するSQL文を教えてください。まったくの初心者なので、よろしくお願いします。

  • SQLの書き方について

    (1)の様なテーブルから結果を(2)の様にしたいのですが どのようなSQLを書いたら表示できるのかわかりません。 アドバイスなどをお願い致します。 (新たにView等を作成するなどでもかまいません。) (1)dept_id / item_id / day / time (カラム) 1111 / 0001 / 20090101 / 60 (レコード1) 1111 / 0001 / 20090102 / 30 (レコード2) 1111 / 0002 / 20090101 / 40 (レコード3) 1112 / 0001 / 20090101 / 30 (レコード4) (2)dept_id / item_id / time1 / time2 1111 / 0001 / 60 / 30 1111 / 0002 / 40 / 1112 / 0001 / 30 /

  • access・複数のテーブル・重複除外したデータ

    accessで複数のテーブルで重複しないレコードだけを抽出するSQL文を知りたいです。 フィールドは多数あり、「フィールドの内容が全て一致するレコード」以外のレコードを 重複しないレコードとして抽出したいと思っています。 テーブルは3つ以上ありますが、2つのテーブルで実行するSQL文でかまいません。

  • accessの前方一致検索について

    accessの前方一致検索について質問させてください。 テーブル名:テーブル1 カラム:ID、氏名 ID  氏名 1   山田 太郎 2   山本 博 3   吉田 浩太 上記のようなテーブルがあった場合に、 SELECT ID,氏名 FROM テーブル1 WHERE 氏名 = [氏名を入力してください] このSQLで氏名を入力すると完全一致することはわかったのですが たとえば「山」と入力したら、山田、山本の2名の結果が抽出できるよう 前方一致にしたいのです。 その場合前述のSQLをどのようにすればいいのでしょうか? 教えていただけると幸いです。