Mysql問合せ構文

このQ&Aのポイント
  • Mysql問合せ構文について解説します。
  • 指定期間内のレコードを抽出する構文について説明します。
  • 具体的な例を挙げて、希望結果を示します。
回答を見る
  • ベストアンサー

Mysql問合せ構文

以下のようなテーブルがあります。 フィールド[DATE]~[EDATE]の中に外より指定する変数、たとえば "2006-10-23"が期間内に含まれるレコードを抽出する 構文をお願いします。 テーブルA ID  |DATE   |EDATE ---------------------------------------- 1  |2006-10-20  |2006-10-30 2  |2006-10-19  |2006-10-22 3  |2006-10-21  |2006-10-28 希望結果 ID  |DATE   |EDATE --------------------------------------- 1  |2006-10-20  |2006-10-30 3  |2006-10-21  |2006-10-28

  • MySQL
  • 回答数1
  • ありがとう数1

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

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

普通にBETWEENでよいでしょう。 (きちんとDATE<=EDATEになっていれば) SELECT `ID`,`DATE`,`EDATE` FROM `テーブルA` WHERE '2006-10-23' BETWEEN `DATE` AND `EDATE`

GETSTREET
質問者

お礼

ちょっと難しく考えていたようです。すっきりしました。どうもありがとうございました。

関連するQ&A

  • MySQLの構文についてです・・・

    いつもお世話になります。 MySQLの構文について悩んでおりますので、アドバイス頂けたらと思います。 環境 MySQL4.0 チームテーブルには各球団の情報があります。 team_table team_id | チーム名  1 | ジャイアンツ  2 | ドラゴンズ  3 | タイガース  4 | ベイスターズ  5 | スワローズ  6 | カープ ----------------------- スケジュールテーブルには対戦カードと審判割当があります。 レコードにはteam_idが入力されています。 schedule_table  id | 対戦チーム1 | 対戦チーム2 | 審判チーム1 | 審判チーム2 |   1 |   1   |   2   |   3   |   4   |  2 |   3   |   4   |   5   |   6   |  3 |   5   |   6   |   1   |   2   | --------------------------------------------------------------- この2つのテーブルから  id | 対戦チーム1 | 対戦チーム2 | 審判チーム1 | 審判チーム2 |  1 |ジャイアンツ |ドランゴンズ | タイガース | ベイスターズ|  2 | タイガース | ベイスターズ| スワローズ |  カープ  |  3 | スワローズ |  カープ   |ジャイアンツ |ドランゴンズ | と表示したいのですが、 INNER JOIN で結合するにも4回行わなければならないのと、フィールド名がかぶってしまうので、もっとスマートな方法がないかと考えております。 大変未熟なためアドバイスを頂けたらと思いますので、よろしくお願い致します。2人くらいの方からアドバイス頂けましたら、迅速に締め切り、ポイント付与させて頂きます。

    • ベストアンサー
    • MySQL
  • 副問合せをいれたINSERT文で、問合せ結果が無い場合

    副問合せをいれたINSERT文で、問合せ結果が無い場合 環境はSQL Server2005です。 テーブルA,テーブルBが存在し、テーブルAにレコード追加する際に一部をテーブルBから抽出して、 INSERTしようとしています。 [SQL文]  INSERT INTO テーブルA(フィールド1, フィールド2, フィールド3,フィールド4・・・)   SELECT 'AAA', 'BBB' ,B.フィールド3, B.フィールド4 ・・・   FROM テーブルB B WHERE ~ この場合、テーブルBにWHEREで指定した条件のレコードが存在しない場合はINSERTされなくなってしまいます。 存在しない場合は、該当のフィールドにはNULLをいれたいのですが、テーブルBからの結果が存在しない場合でも テーブルAにINSERTする方法はありますか?

  • MYSQLのDELETE構文について

    MYSQLのDELETE構文について phpmyadmin上でDELETE構文を使ってデータを一括削除したいと思っています。 このようなテーブルレコードがあります。 テーブル名 : officeinfo ID  name  address  post_date 1  A会社   東京   1130128000 2  B会社   大阪   1130129111 3  C会社   東京   1130132000 4  D会社   東京   1130132568 条件 ・addressが東京 ・post_dateが1130132000より前(1130132000も含む) この条件に当てはまるデータを全て削除したいのですが、この場合どのようなSQLを書けばいいのでしょうか? ためしに下記をやってみましたがエラーになってしまいました。 DELETE * FROM `officeinfo` WHERE `post_date`<=1130132000 and `address`=東京; #1064 - You have an error in your SQL syntax 次に下記を試しましたが同じエラーになってしまいました。 DELETE FROM officeinfo WHERE `address`=東京 ORDER BY `ID` LIMIT 2; どのように直したらいいのでしょうか?

    • ベストアンサー
    • MySQL
  • ACCESS2003 数値や文字列のあいまい検索

    フィールド内に入力されている文字列から、「ひらがな」や「英語」が入力されているレコードの抽出について質問です。 ※[ニックネーム]のフィールドは、英数カナ文字が混在しています。 ======================== (テーブル) [ID]  [ランク]  [ニックネーム]  1     A     123456789 2     B     akb48   3     A     ああああ    4     B     987654321     5     C     かかか123   6     B     112233    7     C     445566      8     A     778899xyz    ======================== ☆上記のテーブルから、[ニックネーム]に「ひらがな」が 含まれるレコードの抽出をする。 ======================= [抽出結果] [ID]  [ランク]  [ニックネーム]  3     A     ああああ    5     C     かかか123    ======================== ☆上記のテーブルから、[ニックネーム]に「英語」が 含まれるレコードの抽出をする。 ======================= [抽出結果] [ID]  [ランク]  [ニックネーム]  2     B     akb48    8     A     778899xyz ======================== 上記のように、クエリでの条件を指定して抽出結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • テーブルの内容とテーブルのカラムの件数

    以下のようなテーブルがあります。 そのテーブルの内容と、そのテーブルのあるカラムの件数を条件にして抽出したいのですが、どのように指定すればよろしいでしょうか? テーブルA id(int) AUTO_INCREMENT, user_id(varchar), price(int), date(datetime) 表示したい一覧 user_id | date | price A | 2014-03-10 10:00:00 | 2600 B | 2014-03-11 11:00:00 | 2720 A | 2014-03-13 12:00:00 | 2500 C | 2014-03-14 15:00:00 | 2860 B | 2014-03-18 13:00:00 | 2450 A | 2014-03-19 19:00:00 | 2550 ・・・ などのレコードがあった場合、 user_idが同じ場合のレコード数が2~5の場合等を抽出したいと思います。 うまく表現できませんが、このような場合の抽出の仕方をわかる方、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 副問い合わせ?

    次のような2つのテーブルA、Bがあるとします。 テーブルA ID, FLG, DATE 01, Y, 2006-10-10 02, N, 2006-11-11 03, N, 2006-12-12 テーブルB ID, DATE 01, 2006-10-10 02, 2006-11-11 DATEが '2006-10-10' 以降でテーブルA.FLGが 'N'、かつ、テーブルBに存在するレコードを検索するにはどうすればよいでしょうか?

  • [MYSQL] GROUP BY による結果レコードの取得について

    こんにちは。 今回は MYSQL の GROUP BY によって、複数レコードのグループ化を行った場合についてお尋ねしたいです。 id, val という二つのフィールドをもつテーブルがあったとして、複数レコードに対して、id でグループ化を行うとします。 その時、val の合計を求めたいのですが、 SELECT id,SUM(val) FROM tablename GROUP BY id となる SQL構文により SUM(val) を取得します。 この場合、SUM(val) を降順にソートした結果レコードを得ることはできますでしょうか? 通常は ORDER BY を用いてこれを行うと思うのですが、このケースではよくわかりません。 また、PEAR によって、これらの結果レコードを連想配列で取得しようと思っています。 結果レコード $rs に対して、 $data = $rs->fetchRow(DB_FETCHMODE_ASSOC); とすると、 $data の連想配列のキーが SUM(val) となってしまいます。 変数に括弧が含まれるのは具合がよくないので、これらを回避する方法はありませんでしょうか? 以上2点おわかりの方がいればお答えいただけないでしょうか。

    • ベストアンサー
    • PHP
  • mysqlテーブルから一つレコードを取得して変数に

    mysqlテーブルから一つレコードを取得して変数に はじめまして。仕事上必要で独学で勉強を始めましたが、行き詰ってしまったので教えてください。 mysql+phpにて以下のテーブル(tbl_ex)で、phpから、'test'のレコードを足がかりに、idの'001'を返して変数に代入する方法がわかりません。 tbl_ex +-------+-----------+ | id | account | +-------+-----------+ | 001 | test | +-------+-----------+ | 002 | sample | +-------+-----------+ accountのtestからidを抜き出すのに SELECT id FROM tbl_ex WHERE account = 'test'; という具合にやったのですが、それからどうidを変数にするのかわからず、 元から違っていて別の方法があるのかと疑問です。 結果、$id='001' というようにしたいです。 凡庸な質問なのかもしれませんが、ご教授お願い致します。

    • ベストアンサー
    • PHP
  • MySQLで別テーブルを参照し、レコードを消したい

    お世話になります。MySQL4のデータベース上に2つのテーブルがあるのですが、 片方のテーブル(a)にあるフィールド(b_id)の値を参照し、もう片方のテーブル(b)のレコードを消していきたいのです。 具体的には以下のようなテーブル(a)とテーブル(b)があります。 TBL: a =========================== id    b_id    category =========================== 0     1       3 --------------------------- 1     2       1 --------------------------- 2     3       2 --------------------------- 3     4       2 --------------------------- TBL: b =========================== id    name    price =========================== 0    goodsA   1,000 --------------------------- 1    goodsB   500 --------------------------- 2    goodsC   250 --------------------------- 3    goodsD   2,500 --------------------------- 4    goodsE    1,800 --------------------------- やりたいことは、テーブル(a)の「category」フィールドが「2」以外であれば、 そのレコードの「b_id」にある数値を「id」にもつ、テーブル(b)のレコードを消していきたいのです。 上記の例だと、テーブル(a)のid「0」と「1」がcategoryに「2」以外を持っています。 この2つのレコードのb_idは「1」と「2」ですので、テーブル(b)のid「1」と「2」を消したいと思っています。 SQLについて知識がなく、困っています。どなたかご存知の方がいらっしゃいましたら、お知恵をお貸しください。 よろしくお願いします。

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

    教えてください。 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