質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

5回答

5204閲覧

データベースから最新のデータを取り出す

bigin

総合スコア67

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/08/21 14:59

編集2017/08/22 07:00

Mysqlでデータベースにデータを入れた後、格納されたデータの中で最新のデータを呼び出したい時にはどのような方法がありますでしょうか?

ご教示いただけますと幸いです。

ちなみにテーブル構造例は以下です。
最新のデータの定義はデータベースに格納された瞬間です。

+-------------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+------+------+-----+---------+-------+ | name | text | YES | | NULL | | | introduce | text | YES | | NULL | | | gazou | text | YES | | NULL | | | companyname | text | YES | | NULL | | | url | text | YES | | NULL | | +-------------+------+------+-----+---------+-------+

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2017/08/21 15:13

テーブル構造とどんな条件で最新とみなすのかの説明を追記されてください。そうでないと、一般的にはといった回答しか付かなくなります。
bigin

2017/08/22 06:59

失礼しました。テーブル構造を追記しておきます。最新の条件=データが追加された時刻とさせてください。
guest

回答5

0

作成順番はわかりませんので、テーブル定義の際に 「hoge INT AUTO_INCREMENT」で自動発番の項目を持たせる事で最新を得る方法も有ります。

sql

1select * from table order by hoge desc;

新しいもの順に取得する。

投稿2017/08/21 22:53

編集2017/08/21 22:56
A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bigin

2017/08/22 07:06

ありがとうございます。つまり、 ①hoge INTO AUTO_INCREMENTで番号を付与 ②select * from table order by hoge desc;で最新順に並び替え ③Auto_incrementが最大のものを取り出す という手順ということでしょうか?
A.Ichi

2017/08/22 07:13

番号は入れた順に1加算されてレコードに入りますのでdescで降順に並べるとそうなります。
bigin

2017/08/22 12:57

ありがとうございます。 ③Auto_incrementが最大のものを取り出す このやり方がわからないので、調べてやってみます。
A.Ichi

2017/08/22 14:19

私が考えられる方法として、2つ有ります。 ①order by descしてlimit 1にて抽出 ②Select * from table where hoge=(select max(hoge) from table) です。
bigin

2017/08/22 14:57

ありがとうございます。②でやってみます。
guest

0

MySQLのInnoDBはテーブルにPRIMARY KEYを定義されていない場合、内部的に行IDを持ち、行IDは新しい行が挿入されると単調増加し、InnoDBはそれを集合インデックスとして利用します。

そのためORDER BYなしで

SQL

1SELECT * FROM テーブル名;

とすると挿入順に並びます。

ですが、SQLとしては順番を保証しない文となるため、おすすめはしません。

投稿2017/08/22 08:36

shoko1

総合スコア372

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

一般的には最新と分かる項目(例: CREATED_AT というフィールド)に挿入した時点の日付を入れたり、他の方が回答している様に連番を付けて最新と分かる様にします。

もしそうではなく、ついさっき INSERT したレコードが知りたいという事であれば DBMS により考え方ややり方が異なりますが例えば MySQL であれば

sql

1SELECT LAST_INSERT_ID()

で最後にインサートしたIDを知る事が出来ます。

追記

+-------------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+------+------+-----+---------+-------+ | id | int | NO |YES | 0 | | | name | text | YES | | NULL | | | introduce | text | YES | | NULL | | | gazou | text | YES | | NULL | | | companyname | text | YES | | NULL | | | url | text | YES | | NULL | | +-------------+------+------+-----+---------+-------+

投稿2017/08/21 23:58

編集2017/08/22 07:09
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bigin

2017/08/22 07:01

ありがとうございます。これはフィールドにそれぞれidとして番号を打つことが前提と考えてよろしいでしょうか?
mattn

2017/08/22 07:13

追記したテーブルの状態となる様にします。id はキーですので重複せず、かつ insert するごとに 1 増える様にします。MySQL であれば auto_increment という属性を create table 時に足せば insert into [テーブル名](name, introduce, gazou, companyname, url) values(...略...) とするだけで勝手に id に最大の値が格納される様になります。何人かの回答者さんが言っている id とはこの id フィールドの事で select 時にこの値が最大のレコードを引けばそれがいわゆる最新のレコードになるという事を指しています。
bigin

2017/08/22 13:02

ime-わかりやすく例まで示していただいてありがとうございます。イメージできました。みなさんベストアンサーとして選びたいのですが、例がわかりやすかったので選ばせていただきます。
guest

0

どのデータが最新かはわかりません。
データとして更新日の日時を持たせてそれの最大値を探すことになります。

投稿2017/08/21 21:10

maiko0318

総合スコア876

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bigin

2017/08/22 07:07

ありがとうございます。ちなみに更新日時を持たせる方法などご存知だったりしますでしょうか?(^◇^;)
maiko0318

2017/08/22 07:23

テーブル追加時に日付をもたせるのは以下、 <?php mysql_query("CREATE TABLE `calendar` ( `id` int(11) NOT NULL auto_increment, `date` date NOT NULL default '0000-00-00', PRIMARY KEY (`id`) ) TYPE=MyISAM; "); for($i=0;$i<=(365*30);$i++) mysql_query("INSERT INTO CALENDAR SET date=date_add(now(),INTERVAL LAST_INSERT_ID() DAY)"); ?>
bigin

2017/08/22 12:56

ありがとうございます!ちょっとやってみます。
guest

0

はじめに

こんにちは。あかこうと申します。
よろしくお願いします。

関連する文献

実装について

基本的にはSELECT文というものを使います。
上に使い方が書かれたを文献まとめましたので、お使いください。

SELECT文の例

テーブル(表)からカラムA(行)とカラムB(行)のすべてのデータを取り出す場合。

mysql

1SELECT カラムA,カラムB FROM テーブル名;

最後に

  • 少々雑な説明ですみません。
  • 「最新のデータ」という言葉がよく理解できませんでしたが、以上のような説明で問題ないでしょうか?
  • 何か質問があったら返信お願いします。可能な限り回答したいと思います。

投稿2017/08/21 15:20

編集2017/08/21 15:29
akakou

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bigin

2017/08/22 07:08

ありがとうございます。すみません、最新のデータとはデータベースに格納された日時が最新ということです。わかりにくくてすみません。
akakou

2017/08/22 07:20

こちらもすみません勘違いしてすみません。 となると、この回答は間違っているので消去させていただきます。
bigin

2017/08/22 12:56

いえ、こちらの質問の仕方が悪く申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問