Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

Selectに関するa20130517のブックマーク (9)

  • MySQLでNOT INの代わりにNOT EXISTSを使うと速い

    ちょっとした情報を取り出す時のクエリが30秒ほどかかったので、何とか改善できないものかと試行錯誤してみました。 2つのテーブルがあって、仮に ■顧客情報 t_client_info ( client_id, name, address) ■顧客履歴 t_client_history (id, client_id, visit_date) とでもしましょう。 visit_dateはdate型ではなくてint型でYYYYMMDDの形式とします。 あとは見たまんまなのでテーブルの説明は省略ます。 2010年の元旦から1年以内に来店した顧客の住所と最終来店日を取得するというクエリです。 1年のうちに1回しか来なかった人は省くことにします。 SELECT i.client_id, name, address, MAX(visit_date) as vdate FROM t_client_info A

  • 別々に取得したデータを結合して取得する(UNION句)

    UNION は複数の SELECT 文によってデータをそれぞれ取得し、その結果を結合した上で1つのデータとして取得する場合に使います。書式は次の通りです。 SELECT col_name1, ... FROM table_name1 UNION [ALL | DISTINCT] SELECT col_name2, ... FROM table_name2 [UNION [ALL | DISTINCT] ...] 最初の SELECT 文で取得したデータに、次の UNION のあとの SELECT 文で取得したデータを結合して取得します。 3 つ以上のテーブルを結合したい場合は UNION 以下をテーブルの数だけ記述してください。 取得したデータのカラム名は最初の SELECT 文のあとに記載されたカラム名となります。それぞれの SELECT 文で取得するデータのカラムの数は同じである必要が

    別々に取得したデータを結合して取得する(UNION句)
  • mysqlでテーブルのレコード数を確認する方法 - dak ブログ

    mysqlでテーブルのレコード数を取得する方法です。 select count(*) from テーブル名 でもよいのですが、たとえばDBの全テーブルのレコード数を知りたい場合には、テーブル数だけ select を実行しなければならなくなります。 こんな場合には、mysqlのテーブル情報でも書いた information_schema DB の TABLES テーブルから情報を取得します。 > select table_name, table_rows from information_schema.TABLES; +------------+------------+ | table_name | table_rows | +------------+------------+ | tbl1 | 10 | | tbl2 | 5 | | tbl3 | 5 | +------------+-

    mysqlでテーブルのレコード数を確認する方法 - dak ブログ
    a20130517
    a20130517 2014/03/24
    select table_name, table_rows from information_schema.TABLES where table_schema = 'DBname';
  • MySQLのgroup_concatで複数レコードを1行にまとめる - 文系プログラマによるTIPSブログ

    実は非常に有用で、この機能が実は欲しかった!と言う方が続出する機能なのですよね〜 全然知らなかったのですが、mysqlでは複数レコードを1行にまとめる事ができます。 複数行をカンマ区切りにしたり、結構有効に使えそうです。 テーブル・データの準備 テーブル データ 実際に実行してみる 普通にselectしてみる group_concatしてみる group_concat + distinct group_concat + group by テーブル・データの準備 早速サンプルコードを。 テーブル mysql> create table gc1(id int auto_increment, uid int, name varchar(30), primary key(id))engine=innodb charset=utf8mb4; Query OK, 0 rows affected (0.

    MySQLのgroup_concatで複数レコードを1行にまとめる - 文系プログラマによるTIPSブログ
  • SQL

    表の検索(SELECT) <昇順/降順で検索> SELECT 列名1, 列名2, 列名3, ...FROM 表名 ORDER BY 列名1 並び順1, 列名2 並び順2, ...; 並び順  昇順:ASC 降順:DESC (例) SELECT 氏名, 国語, 英語 FROM 成績 ORDER BY 国語 DESC, 英語 DESC; <日付の指定> 日付を条件式に指定する場合は、下記のいずれの場合も有効です。 '2004-09-08'  '04-09-08'  '04-9-8'  '2004/09/08'  '04/09/08' (例) SELECT * FROM 売上 WHERE 日付 <> '2004-09-09'; <値が未入力のレコードを抽出> SELECT 列名1, 列名2, 列名3, ...FROM 表名 WHERE 列名 IS NULL; (例) SELECT * FROM 

  • ビューを作成する(CREATE VIEW文)

    MySQL では新しいビューを作成するときに CREATE VIEW 文を使用します。ここでは MySQL でビューを作成する方法について解説します。

    ビューを作成する(CREATE VIEW文)
  • [SQL] 9. ビュー 1

    ビューとは、CREATE TABLE で定義された実テーブルから作成される仮想的なテーブルのことです。ビューはあくまでも仮想テーブルなので、その中にデータは存在しません。ビューは実テーブルをどのように見るのかを定義したものと言えます。 もうすでに使っていますが、CREATE TABLE で定義された、データの入ったテーブルのことを実テーブル、この実テーブルから作られる仮想的なテーブルをビューと呼ぶことにします。 9.1. ビューのメリット ビューの実体は SELECT 文によるクエリを定義したものです。ビューにアクセスすると、定義されたクエリが実行され、実テーブルから必要なデータが抽出されます。また、ビューからビューを定義することも可能です。ですから、あらかじめ毎回入力するのが面倒な複雑なクエリを一度ビューとして定義しておけば、ユーザやプログラムは単純なクエリを実行するだけですみます。 こ

  • 別のテーブルのデータをテーブルに追加する(INSERT ... SELECT文)

    INSERT INTO tbl_name (col_name1, col_name2, ...) SELECT col1, col2, ... FROM other_table WHERE ... データを取得したい別のテーブルからどのようにデータを取得するのかを SELECT 文で記述し、データを追加するテーブルでどのカラムに値を格納するのかを指定します。 SELECT 文で指定するカラムの数と INSERT 文で指定するカラムの数は一致していなければいけません。 -- -- では実際に試してみます。データを追加する側として次のようなテーブルを作成しました。データをいくつか追加しておきます。 create table sales (id int auto_increment, name varchar(10), count int, index(id)); insert into sal

    別のテーブルのデータをテーブルに追加する(INSERT ... SELECT文)
  • MySQL/SELECT結果でUPDATEする - 俺の基地

    別テーブルの値を使ってデータの一部の値を洗い替えたい タイトルはSELECT結果でUPDATEですがMySQLではそれができません。 でも「SELECT結果でUPDATE」したい場合って、別テーブルの値を使ってデータの一部の一括して値を洗い替えたい状況がほとんどだと思いますので・・・ MySQLのUPDATE構文はそういうことができるようになっている。簡単に言うとデータソースが2つある半分SELECT構文のようなUPDATE文が書ける UPDATE A, B SET A.name = B.name WHERE A.id = B.id こんな感じ。 これだとテーブルA上のレコードとB上のレコードでidが合致するもののnameをBの値で書き換えるということになる。 解釈順番とか考えるとこんがらがってくるが集合として考えると・・・まぁ納得できるかな。 Oracleとかはupdateでもse

  • 1