• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グループ内最大値に印を付けるSQL文)

MySQL5で同じ年度グループ内の最大値を取得し、行にフラグを付けるSQL文を教えてください

kosukejlampnetの回答

回答No.1

同じ年度で最大値を持つレコードが複数あった場合はどうしますか?

litton101
質問者

お礼

kosukejlampnetさん、早速のコメントありがとうございました、 >同じ年度で最大値を持つレコードが複数あった場合 基本的に、通し番号(number)は、auto_incrementでユニーク&自動採番なので重複レコードは存在しませんが、より後ろに格納されているデータと解釈お願いできればと存じます。よろしくお願い致します。

関連するQ&A

  • while文から抜け出せません。。。

    現在、以下↓のようなプログラムで、MySQLからIDの一覧を拾いたいと考えています。しかし、一覧の中に空欄(登録する際はこんな感じです→(''))を代入したところ、while文から抜け出せません。どうしたらいいでしょうか?while文をやめる方法でもいいので、お願いします。 while ($col = mysql_fetch_array($rst)) { $return[] = $col[dataid]; }

    • 締切済み
    • PHP
  • データベースで値をインクリメントする方法

    このジャンルでお願いします。 例えばあるカラムをインクリメントする場合に MySQLだと UPDATE mytable SET col=col+1 WHERE id=1; というSQL文でできますが、 一方でプログラム(PHPなど)側で一旦その行を取り出して $id = 1; $col += 1; UPDATE mytable SET col={$col} WHERE id={$id}; というやり方もあると思います。 どちらが良いとか悪い(?)とかあるのでしょうか? 実際にみなさんはどちらのやり方でやっているのでしょうか?またできれば理由もお願いします。 というのも、PHPなどのフレームワークでは値をインクリメントしたい場合は ほとんどが後者のやり方になると思います。 自分的には前者のSQL文でやった方がなんとく良いのでは?と思ってるのですが、 フレームワークなどを使って更新処理を行うと後者のやり方になってしまうので

    • ベストアンサー
    • PHP
  • 複数のカラムの中から最大値を取得するSQL

    MySQLで1コードの中で3つのカラムから最大値を 取得する事は可能でしょうか? id test1,test2,test3 1 5 7 6 だとすると、id=1の最大値は7と返してくれるSQL を書きたいです。IF文とか使わないと無理でしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL文の作成苦戦しています。。

    SQL文の作成で困っております。 有識者の方、ご教授願います。 取得したい情報は、以下の通りです。 HOGEテーブル |COL-A|COL-B|COL-C|   111   1   1 … (1)   111   2   1   111   3   2   222   1   2 … (2)   222   2   3 1.Aでグルーピングした中で、COL-Cの最小値を取得 2.#1の中で一番小さい値を取得 ようするに、(1)や(2)のような情報を取得したいのです。 自分自身で作成したSQLは以下のような感じですが、 ちょっと遅いのです。。。 SELECT COL-A, MIN(COL-B), MIN(COL-C) FROM HOGE1, ( SELECT COL-A, MIN(COL-C) AS COL-C FROM HOGE GROUP BY COL-A ) HOGE2 WHERE HOGE1.COL-A = HOGE2.COL-1 AND HOGE1.COL-C = HOGE2.COL-C GROUP BY COL-A 理由はいろいろあります。ですが、最大の理由は、COL-Cの最小値を取得する為に作成しているサブクエリーじゃないかと思っています。そもそも、HOGEテーブル自体、10万件レベルのテーブルを結合して作っているテーブルなので、VIEWを作ってる時点で遅いんです。それに輪をかけて、サブクエリーなんてものを作っているものだから。。。できるだけ、サブクエリーを避けて取得したいのですが、なかなか上手くいきません。ただ、これ以外の方法は存在しない気もします。。 これ以外の方法で、良い方法があればご教授頂きたく。よろしくお願いします。

  • select文

    こんばんは。PHPでデータベースからレコードとフィールドを表として取り出そうとしてますが、うまく行きません。 MySQLへの接続はうまくいってると思うので、while文が間違ってるのでしょうか?PHPのバージョンはPHP Version 4.4.2です。 よろしくお願いしますm(__)m <?php require_once("dbini.php"); $con = mysql_connect($server, $user, $pass); $select = mysql_select_db($dbname, $con); $sql = "select * from book"; $rst = mysql_query($sql, $con); $body = "<table border='0' cellpadding='5' cellspacing='5' width='500'><tr><td>\n"; while($col = mysql_fetch_array($rst)) { $body .= "<b><font size='+2'>".$col["title"]."</font></b>" $body .= "</td></tr>"; $body .= "<tr><td colspan='2'>".$col["article"]."</td></tr></table>"; } mysql_free_result($rst); $con = mysql_close($con); ?> <html> <body> <?= $body ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHP+mysqlでSQL文に文字数制限はありますか?

    基本的な質問で申し訳ありません。 $sql="......";にSQL文を書き $rst = mysql_query($sql,$con); $col = mysql_fetch_array($rst); として($conはmysql_connect関数の結果です) WEBを作成しているのですが、ある程度以上長いSQL文を書くと正常に作動しません。(短いSQLであれば正常に差作動します。)  当然SQL文自体もmysqlで直接実行すると作動するものです。SQL文自体がUNIONや副問い合わせを多用し250行程度になってしまったためかと考えていますが、文字数制限等があるのでしょうか?PHPには変数宣言が無いと認識しているのでどう対処して良いかわかりません。 SQLを分解できないとすると何か良い方法はありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 一行目のレコードを2度表示させたい。

    レコードを読み込むのとは別に、最終書き込み者(ソートした最初のレコード)を表示させたいのですが、mysql_fetch_array($rst)を読み込ませると1位行目が消え、次ぎにmysql_fetch_array($rst)が読み込む時には2行目からになります。 ------------------------- 最終書き込み者 一太郎さん「一番目のタイトル」 -レコードの一覧- □一太郎 一番目タイトル □次郎  2番目のタイトル □佐武郎 三番目のタイトル ------------------------- としたいのですが。 SQLを2度実行すればできるのですが、無駄な処理な気もします。 別のテーブルやこの情報だけtextに保存するのも無駄な気もするし。 //一番目をゲット $sql = "select * from siritori order by db_no desc limit 1;"; $rst = mysql_query($sql,$con); //$rst2 = $rst; $col = mysql_fetch_array($rst); print "最終書き込み者".$col["name"]."さん".$col["title"]."<hr>"; //一覧を表示 $sql = "select * from siritori order by db_no desc limit 10;"; $rst = mysql_query($sql,$con); //SQL配列読み込み(select文) while($col = mysql_fetch_array($rst)){ print $col["name"]."さん".$col["title"]."<br>".$col["kome"]."<hr>";} //$rst2 = $rst; 配列をコピーできないかなー?とかもやったのですができない。 なんとか巧い解決方法はないでしょうか? 連想配置や、MySQLには詳しくないのでお教えください。

    • ベストアンサー
    • MySQL
  • SQL1回で、平均と合計を両方出す方法はありますか?

    1回のSQL文発行で、同じフィールドに対し平均(AVG)と合計(SUM)を 両方算出することはできませんよね? 以下のようにすると、「第一列」が空白で出力されてしまいます。 $sql = "SELECT AVG(MYDATA) AS AVG_MYDATA, SUM(MYDATA) AS SUM_MYDATA FROM MYTABLE"; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst); for ($recnum = 0; $recnum < $recmax; $recnum++) { $col = mysql_fetch_array($rst); $body = "<table border='1'>"; $body .= "<tr>"; $body .= "<td>" . $col["AVG_NYDATA"] . "</td>"; //第一列 $body .= "<td>" . $col["AVG_NYDATA"] . "</td>"; //第二列 $body .= "</tr>"; $body = "</table>"; 環境:MySQL 4.0.25

    • ベストアンサー
    • MySQL
  • SQLの結果が返ってこない

    PHP+mysqlで以下のようなSQL文で処理を行ったのですがデータが返ってきません。 $sql = 'SELECT * FROM books WHERE id=3'; $recordSet = mysql_query($sql); if(mysql_fetch_assoc($recordSet)){ while ($table = mysql_fetch_assoc($recordSet)) {        処理     } } mysqlの画面で SELECT * FROM books WHERE id=3 を入力してみるとしっかりと結果が返ってきます。 ちなみに1行目を、違うテーブルの $sql = 'SELECT * FROM podcast WHERE code=3 ORDER BY dcdate DESC LIMIT 0,3'; にしてみると、データが表示されます。 2日間かけてずっと試行錯誤してみたのですが、完全に行き詰ってしまったので、何か考えられる原因はありませんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • SQL文を一気に入力したい

    データベースに今までのデータを入れるため、 SQL文で入力しようと思っています。 しかし、入力するデータ量が多いので、 ファイルから読み込んで実行しようと考えました。 そこで、以下のプログラムを書いたのですが、 なんだかうまくいきません。 どなたか教えていただけないでしょうか。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>データの追加</title></head> <body> <?php $host = "localhost"; if (!$conn = mysql_connect($host, "root", "pass")){ die("データベース接続エラー.<br />"); } mysql_select_db("service_db", $conn); $fp = @fopen('sample.txt','r'); $i = 0; while( $sql[$i] = fgets($fp,2048) ){ $sql[$i] = stripslashes($sql[$i]); // print $sql[$i]; mysql_query($sql[$i], $conn) or die ("登録できませんでした。".$i); $i++; } fclose($fp); ?> </body> </html> ※ファイルにはSQL文が1行にひとつ書かれています。 よろしくお願いします。

    • 締切済み
    • PHP