SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

MySQL 編10 - スカラー副問い合わせ、件数指定、LIMIT、HAVING、USING

■スカラー副問い合わせ

  ・MySQL では、スカラー副問い合わせはサポートされていないようである。

■インラインビュー

  ・MySQL では、インラインビューはサポートされていないようである。

■件数指定 LIMIT

  ・先頭から 3 件問い合わせるには、次のようにする。
    access の top と同じことができる。
    (TOP 10 取得、表示行制限、レコード数限定、件数指定、表示件数)
    (1 レコード取得、1 件取得)

select * from testm
  order by key1
  limit 0, 3
;

+------+-------+-------+-------+
| key1 | data1 | data2 | data3 |
+------+-------+-------+-------+
| a001 |     1 |     2 |     3 |
| a011 |     1 |     2 |     3 |
| b002 |    10 |    20 |    30 |
+------+-------+-------+-------+

  ・先頭レコードを問い合わせるには、次のようにする。

select * from testm
  where key1 like 'a%'
  order by key1
  limit 0, 1
;

+------+-------+-------+-------+
| key1 | data1 | data2 | data3 |
+------+-------+-------+-------+
| a001 |     1 |     2 |     3 |
+------+-------+-------+-------+

  ・最後から 3 件問い合わせるには、ソートオーダを逆にすれば良い。

select * from testm
  order by key1 desc
  limit 0, 3
;

+------+-------+-------+-------+
| key1 | data1 | data2 | data3 |
+------+-------+-------+-------+
| c003 |   100 |   200 |   300 |
| b002 |    10 |    20 |    30 |
| a011 |     1 |     2 |     3 |
+------+-------+-------+-------+

■HAVING

  ・集計結果に対する問い合わせ条件を指定する。

select key1, count(*), sum(data1), avg(data1) from testm
  group by key1
  having sum(data1) > 10;

+------+----------+------------+------------+
| key1 | count(*) | sum(data1) | avg(data1) |
+------+----------+------------+------------+
| c003 |        1 |        100 |   100.0000 |
+------+----------+------------+------------+

■USING

  ・項目で結合する。(この例は悪い。)

select * from test2m left join testm
  using (key1);

select * from test2m left join testm
  using (key1);

■CROSS JOIN

  ・Oracle の「,」標記と同じ。(クロス結合、クロスジョイン)

select * from test2m cross join testm
  where test2m.code1 = testm.key1;

+-------+-------+------+-------+-------+-------+
| key1  | code1 | key1 | data1 | data2 | data3 |
+-------+-------+------+-------+-------+-------+
| abc01 | a001  | a001 |     1 |     2 |     3 |
| abc02 | a011  | a011 |     1 |     2 |     3 |
+-------+-------+------+-------+-------+-------+

■NATURAL JOIN

  ・同じ名前の列を自然結合する。(ナチュラルジョイン)
    (この例は悪い。)

select * from test2m natural left join testm;

+-------+-------+------+-------+-------+-------+
| key1  | code1 | key1 | data1 | data2 | data3 |
+-------+-------+------+-------+-------+-------+
| abc01 | a001  | NULL |  NULL |  NULL |  NULL |
| abc02 | a011  | NULL |  NULL |  NULL |  NULL |
| abc03 | z999  | NULL |  NULL |  NULL |  NULL |
+-------+-------+------+-------+-------+-------+

■MySQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK