SQLプログラミング質問スレ

このスレでは
「こういうことをやりたいんだけどSQLでどう書くの?」
「こういうSQLを書いたんだけどうまく動きません><」
といった質問を受け付けています。

質問するときは使用するDBMSを必ず明記してください。

質問テンプレ


・DBMSとバージョン Oracle 、SQL server 2014、MySQL、PostgreSQL、SQLite、ACCESS、DB2など
・テーブルデータ
・欲しい結果
・説明

SQL(Structured Query Language)とは

SQL(Structured Query Language)はリレーショナルデータベースを操作(テーブルやインデックスの作成、テーブルに格納されたデータの操作)するための言語です。 SQLはISOによって標準化されていますが、標準を100%実装したDBMSは存在しません。 また、DBMSによっては標準でない独自の構文が追加されていることもあります。

SQL言語リファレンス一覧

Oracle Database
Microsoft SQL Server
IBM DB2 Database
PostgreSQL
MySQL

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)
翔泳社 著者:ミック


amazon.co.jpのカスタマーレビューを見る
powered by amalink

[4441] Posted by kagahiro at 2016/09/29 13:33:56
オープン | 10 point | Link (1) | Trackback (2) | Comment (8)

キーワード
SQL 質問 DBMS プログラミング

語句検索のホームページ


SQLプログラミング質問スレ 関連リンク

PHPでMySQLに接続して、SELECTでデータを取得するサンプルプログラム
PHPのプログラムからMySQLに接続し、SELECTでデータを取得する処理のサンプルプログラムです。あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3...

SQLプログラミング質問スレ トラックバック

トラックバックURL :

Linked from 語句ログ : MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する at 2016/09/30 11:43:16
MySQLでは、UPDATEでLIMIT句とORDER BYを使用して上位n件のレコードを更新することができます。更新前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LIMIT句で指定した行数...
Linked from 語句ログ : MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する at 2016/09/30 15:29:40
MySQLでは、INSERT ... SELECTを使用することで1つまたは複数のテーブルからレコードをテーブルに追加できます。また、SELECTでLIMIT句とORDER BYを使用して上位n件のレコードのみテーブルに追加することもできます。...

SQLプログラミング質問スレへのコメント

1 Posted by 名無しさん at 2016/09/29 23:22:05
よくある質問1

(問)
ID | DATE     | DATA
--+----------+-----
1 | 2007-11-11 | aaa
2 | 2007-11-11 | bbb
1 | 2007-11-10 | ccc
3 | 2007-11-12 | ddd
3 | 2007-11-11 | eee
4 | 2007-11-10 | fff
1 | 2007-11-12 | ggg

このようなテーブルから、下記のように

1 | 2007-11-12 | ggg
3 | 2007-11-12 | ddd
2 | 2007-11-11 | bbb
4 | 2007-11-10 | fff

各idに対して最新の1件だけ抽出するSQLの書き方を教えてください。

(答)
select A.ID,
    A.DATE,
    A.DATA
from TableName A
   inner join
   (select ID, max(DATE) as MAX_DATE
    from TableName
    group by ID
   ) B
   on A.ID = B.ID
   and A.DATE = B.MAX_DATE
;
2 Posted by 名無しさん at 2016/09/29 23:22:23
よくある質問2

(問)
key   data
----------------
1     a
1     a
1     b
1     b
1     a
2     b
2     a
2     a

というテーブルから

key   a   b
--------------------
1    3   2
2    2   1

というExcelのピボットの様なデータを取得したいのですが、どういうSQLになりますか?
a,bというのは固定なので、仮にcというデータがあっても無視して構いません。

(答)
SELECT key,
    SUM(CASE data WHEN 'a' THEN 1 END) AS a,
    SUM(CASE data WHEN 'b' THEN 1 END) AS b
FROM table
GROUP BY key
ORDER BY key
;
3 Posted by 名無しさん at 2016/09/29 23:25:07
よくある質問

(問)
ID HOGE
01 A
01 B
01 C
02 A
03 B

HOGEをAもBもCも持っている、ID:01だけ取り出すにはどうすればよかですか

(答1)
SELECT id
FROM TableName
WHERE hoge in ('A','B','C')
GROUP BY id
HAVING count(DISTINCT hoge) = 3
;

(答2)
select *
from TableName T1
where not exists (select *
         from (values 'A', 'B', 'C') T2 (HOGE)
         where not exists (select *
                  from TableName T3
                  where T1.ID = T3.ID
                  and T2.HOGE = T3.HOGE
                  )
         )
;
※valuesの部分(Table Value Constructor)はDBMSによって文法がかなり違うので注意
4 Posted by 名無しさん at 2016/09/29 23:25:29
よくある質問4

(問)
列の数が可変な問合せはどう書きますか?

(答)
標準SQLでは書けません。
pivotという機能を搭載したDBMSなら一見書けそうですが実はやっぱり書けません。
Oracle 11g以降でpivot xmlというキーワードを使用すれば一応可変っぽくはなります。
が、素直にプロシージャを書くかアプリケーションで処理したほうが良いでしょう。

SQL Serverのpivot(2005以降)
http://msdn.microsoft.com/ja-jp/library/ms177410.aspx

Oracleのpivot(11g以降)
http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/statements_10002.htm#CHDCEJJE
http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html
5 Posted by 名無しさん at 2016/09/29 23:25:57
よくある質問5

(問)
年月(YYYYMM)を指定し、その年月に対応する年月日を取得したい

 例:201006を指定したら、以下の結果を得たい

   20100601
   20100602
    ・
    ・
    ・
   20100630

(答)
SQLでは存在しないデータを生成することはできません。
この問いの場合は素直にカレンダーテーブルを用意しましょう。

どうしてもやりたければ以下のような方法もなくはないですが、
再帰問合せの本来の使い方ではありません。
やめておくことを強くお奨めします。
(PostgreSQLのgenerate_series()関数なら辛うじてセーフかもしれませんが
 賛否の分かれるところでしょう。)

with TEMP (NUM) as (
    select 1 from dual
    union all
    select NUM + 1 from TEMP where NUM < 31
)
select to_char(to_date('201006', 'YYYYMM') + NUM - 1, 'YYYYMMDD')
from TEMP
where to_date('201006', 'YYYYMM') + NUM - 1 < add_months(to_date('201006', 'YYYYMM'), 1)
;

※上記はOracleの場合です。(11gR2以降)
※再帰問合せをサポートするDBMSならこれを適当に改変すれば動きますが
 どのみちお奨めしません。
6 Posted by 名無しさん at 2022/06/08 21:03:06
ในปี 2022 ทุกท่านที่ประสบพบปัญหาในเรื่องที่เกี่ยวข้องกับการเงินจะหมดไปเมื่อได้ลงทุนกับ
playslot888.com ผู้ให้บริการเว็บสล็อตแท้ ที่จะสร้างรายได้ออนไลน์ ผ่านเกมslotซึ่งสามารถหารายได้ได้จริง มีเกมดังให้เลือกเล่นมากหลายค่าย จากpgslot,สล็อตxo,live22 สล็อต
แตกง่าย,สล็อตโจ๊กเกอร์,SLOT
SUPER,สล็อต jili,pragmatic play เว็บตรง ซึ่งมีให้เลือกเล่นมากยิ่งกว่า 1,000 เกมส์ เลยทีเดียว ซึ่งการเล่นของทุกท่านจะไม่ผ่านเอเย่นต์ใดๆ เล่นได้โดยตรง
ไได้รับการยืนยันจากหน่วยงานต่างแดนมากมาย ไม่ว่าจะเป็น GMM ซึ่งเป็นหน่วยงานที่ควบคุมเกี่ยวกับเว็บพนันออนไลน์โดยตรง เพื่อไม่ให้ผู้ใช้บริการนั้นโดยการเอาเปรียบ เว็บสล็อตเว็บตรงไม่ผ่านเอเย่นต์ของเรานั้น ไม่มีการดัดแปลงแก้ไขตัวเกมแต่อย่างใด เล่นง่าย แตกง่ายแตกบ่อยมาก
ไม่เหมือนเว็บอื่นๆที่ท่านเคยเล่นมาอย่างไม่ต้องสงสัย มีระบบที่จะอำนวยความสะดวกสบายให้กับสมาชิกอย่าง เว็บสล็อตฝากถอนออโต้ ที่รวดเร็วทันใจ ใช้เวลาไม่นานไม่เกิน 10 นาที อีกทั้งยังรองรับslot wallet ไม่มีขั้นต่ำ โดยไม่จำเป็นต้องใช้บัญชีธนาคาร อีกทั้งยังจัดเต็มไปด้วยโปรสล็อตสมาชิกใหม่ และยังเอาใจผู้ที่มีทุนน้อย ที่จะฝากเงินรับโบนัสฟรีๆ อย่างสล็อต
10 บาทรับ 100,ฝาก 20 รับ 100 ทำ เทิร์น 200 สำหรับท่านที่พึงพอใจต้องการมีอาชีพเสริมผ่านหนทางออนไลน์ วันนี้ playslot888.com เปิดให้บริการสมัครเกมสล็อตเว็บตรง เข้ามาเปิดประสบการณ์
รวมสนุกสนานได้ตลอด 24 ชั่วโมง ไม่มีวันหยุด และสำหรับใครที่ยังเป็นมือใหม่ เรามีบทความ Review สล็อตออนไลน์ ซึ่งมีเกมดังมากมายอย่างเช่น Fortune Ox,สล็อตบ้านขนมหวาน,สล็อตกัวกระโหลก สามารถอ่านได้ฟรี เพิ่มโอกาสให้ เล่นเว็บสล็อตตรง แตกง่าย แตกบ่อย ได้มากยิ่งขึ้น playslot888.com
7 Posted by 名無しさん at 2022/06/12 12:14:50
ในปี 2565 ทุกท่านที่เจอปัญหาในเรื่องเกี่ยวกับเงินจะหมดไปเมื่อได้ลงทุนกับ playslot888.com
ผู้ให้บริการเว็บสล็อตแท้ ที่จะสร้างรายได้ออนไลน์ ผ่านเกมสล็อตออนไลน์ซึ่งสามารถหารายได้ได้จริง มีเกมแตกง่ายให้เลือกเล่นมากหลายค่าย จากเว็บสล็อต pg,สล็อตxoเว็บตรง,
slotlive22,สล็อตโจ๊กเกอร์ค่ายใหญ่,ซุปเปอร์ สล็อต,
slot jili,pragmatic play เว็บตรง ซึ่งมีให้เลือกเล่นมากยิ่งกว่า 500 เกมส์ เลยทีเดียว ซึ่งการเล่นของทุกท่านจะไม่ผ่านตัวแทนใดๆ เล่นได้โดยตรง ไได้รับการยืนยันจากหน่วยงานต่างถิ่นมากมาย ไม่ว่าจะเป็น GMM ซึ่งเป็นหน่วยงานที่ควบคุมเกี่ยวกับเว็บพนันออนไลน์โดยตรง เพื่อไม่ให้ผู้ใช้บริการนั้นโดยเอาเปรียบ เว็บตรงไม่ผ่านเอเย่นต์ของเรานั้น
ไม่มีการดัดแปลงปรับปรุงแก้ไขตัวเกมแต่อย่างใด เล่นง่าย แตกง่ายแตกหลายครั้ง ไม่เหมือนเว็บไซต์อื่นๆที่ท่านเคยเล่นมาอย่างแน่แท้ มีบริการที่จะอำนวยความสะดวกสบายให้กับสมาชิกอย่าง เว็บฝากถอนออโต้ไม่มีขั้นต่ำ ที่เร็ว ใช้เวลาไม่นานไม่เกิน 15 นาที อีกทั้งยังรองรับslot true wallet ไม่มี ขั้นต่ำ โดยไม่จำเป็นต้องใช้บัญชีธนาคาร อีกทั้งยังจัดเต็มไปด้วยโปรโมชั่นสล็อต100% และยังเอาใจผู้ที่มีทุนน้อย ที่จะฝากเงินรับโบนัสฟรีๆ อย่างโปรโมชั่นสมาชิกใหม่ฝาก10รับ100,เว็บสล็อตใหม่ล่าสุด20รับ100 สำหรับท่านที่สนใจอยากมีอาชีพเสริมผ่านหนทางออนไลน์ วันนี้ playslot888.com เปิดให้บริการสมัครเล่นสล็อต เข้ามาเปิดประสบการณ์ รวมสนุกสนานได้ตลอด 24 ชั่วโมง ไม่มีวันหยุด และสำหรับใครที่ยังเป็นมือใหม่ เรามีบทความ รีวิวเกมสล็อตได้เงินจริง ซึ่งมีเกมดังมากมายอย่างเช่น
วัวนรก,Candy Bonanza,ไวด์แบนดิโต้
สามารถอ่านได้ฟรี เพิ่มโอกาสให้ เล่นสล็อต เว็บตรงไม่ผ่านเอเย่นต์ไม่มีขั้นต่ำ
แตกง่าย แตกบ่อย ได้มากยิ่งขึ้น
เว็บสล็อตฝากถอนออโต้
8 Posted by 名無しさん at 2022/06/16 13:42:55
ในปี 2022 ทุกคนที่เจอปัญหาในเรื่องของการเงินจะหมดไปเมื่อได้ลงทุนกับ playslot888.com ผู้ให้บริการสล็อตเว็บตรง ที่จะสร้างรายได้ออนไลน์ ผ่านเกมสล็อตออนไลน์ที่สามารถหาเงินได้จริง มีเกมแตกง่ายให้เลือกเล่นมากมายก่ายกองหลายค่าย
จากPG SLOT,สล็อต xoเว็บตรงไม่ผ่านเอเย่นต์,live22,สล็อตโจ๊กเกอร์,SUPERSLOT,สล็อต jili,pragmatic ซึ่งมีให้เลือกเล่นมากกว่า
300 เกมส์ เลยทีเดียว ซึ่งการเล่นของทุกคนจะไม่ผ่านเอเย่นต์ใดๆ เล่นได้โดยตรง ไได้รับการยืนยันจากหน่วยงานต่างชาติมากมาย ไม่ว่าจะเป็น GAMBLING
COMMISSION ซึ่งเป็นหน่วยงานที่ควบคุมเกี่ยวกับเว็บพนันออนไลน์โดยตรง เพื่อไม่ให้ผู้ใช้บริการนั้นโดยเอาเปรียบ เกมสล็อตเว็บตรงของเรานั้น ไม่มีการดัดแปลงปรับปรุงแก้ไขตัวเกมอะไร
เล่นง่าย แตกง่ายแตกบ่อยครั้ง
ไม่เหมือนเว็บอื่นๆที่ท่านเคยเล่นมาอย่างแน่นอน
มีระบบที่จะเพิ่มความสะดวกให้กับสมาชิกอย่าง slot ไม่มีขั้นต่ำ ที่เร็วทันใจ ใช้เวลาไม่นานไม่เกิน 15
นาที อีกทั้งยังรองรับslot
true wallet ไม่มี ขั้นต่ำ โดยไม่จำเป็นต้องใช้บัญชีธนาคาร
อีกทั้งยังจัดเต็มไปด้วยโปรสล็อตเทิร์นน้อย
รวมทั้งยังเอาใจผู้ที่มีทุนน้อย ที่จะฝากเงินรับโบนัสฟรีๆ อย่างสล็อตโปรทุนน้อย 10 รับ100,เว็บสล็อต ฝาก
20 รับ 100 สำหรับท่านที่พอใจต้องการมีรายได้เสริมผ่านหนทางออนไลน์ วันนี้ playslot888.com เปิดให้บริการสมัครเว็บสล็อต เข้ามาเปิดประสบการณ์ รวมสนุกได้ตลอด 24
ชั่วโมง ไม่มีวันหยุด และสำหรับใครที่ยังเป็นมือใหม่ เรามีบทความ
รีวิวเกมสล็อตยอดฮิต
ซึ่งมีเกมดังมากมายอย่างเช่น
วัวทอง,สล็อตบ้านขนมหวาน,
Wild Bandito สามารถอ่านได้ฟรี เพิ่มโอกาสให้ เล่นเว็บเกมสล็อต แตกง่าย แตกบ่อย ได้มากยิ่งขึ้น สล็อต xoเว็บตรงไม่ผ่านเอเย่นต์ (https://playslot888.com/)

詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前のスレッド      次のスレッド >

アクセスランキング

今日のアクセスランキング(上位10件)

  1. [掲示板]59bbs のダウンロード(Perl/CGI)[フリーソフト] (2 PV)
  2. 岡沢高宏の相棒でヤクザの金村剛弘(金剛弘)が西新宿の路上で襲撃され死亡 (2 PV)
  3. 大和 RMT 業界最安値 (1 PV)
  4. 豪ケビン・ラッド首相は泥棒の血統を持つ「生粋のオーストラリア人」 (1 PV)
  5. SQLプログラミング質問スレ (1 PV)
  6. オープン2ちゃんねる (1 PV)
  7. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (1 PV)

今月のアクセスランキング(上位10件)

  1. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (26 PV)
  2. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (25 PV)
  3. 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (16 PV)
  4. 「真実を探すブログ」と「カレイドスコープ」が互いに誹謗・中傷と非難の応酬 (15 PV)
  5. 伝説の男、瓜田純士さんが新宿駅構内で2週間前に割腹自殺を図る (11 PV)
  6. SQLプログラミング質問スレ (11 PV)
  7. オープン2ちゃんねる (10 PV)
  8. [掲示板]59bbs のダウンロード(Perl/CGI)[フリーソフト] (9 PV)
  9. 2chみたいな掲示板「PHP 2chBBS」 (9 PV)
  10. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (8 PV)

アクセス統計

ディレクトリ

関連サイト