例えば以下のような3カラムでcol_1とcol_2それぞれの最大値であるmemberがAであるレコードを取得したいと考えております。
| col_1 | col_2 | member |
|---|---|---|
| 2 | 2 | A |
| 1 | 1 | B |
| 2 | 1 | C |
| 1 | 2 | D |
| 1 | 3 | E |
php
1$sql = "SELECT * FROM test_table WHERE col_1 = (SELECT MAX(col_1) FROM test_table) AND col_2 = (SELECT MAX(ver_minor) FROM test_table)" 2//Warning: PDO::prepare(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
の様に条件句をANDで2つつなげることができず、構文エラーが発生してしまいます。「複数カラム それぞれ 最大値」の様に検索すると、複数カラムの中での最大値で3をもつEの様なパターンはすぐ出てくるのですが、今回の様にそれぞれの最大値という場合にはどの様にすれば良いのでしょうか?
直感的にどちらかのカラムが優先して先に問い合わせしなくてはいけないのはわかっているのですが、今回の場合
優先はcol_1でございます。
よろしくお願い申し上げます。
同値の場合はどうするのでしょうか
col_2の最大値は3でEです
m.ts10806様
コメントありがとうございます。複数のレコードを取得すると考えております。
よろしくお願い申し上げます。
yambejp様
はい、ご理解のとおりです。「col_2の最大値は3でE」なのですが、問い合わせ内容と何か矛盾ございますでしょうか?今一度、自身の質問内容を読み直してみたのですが、わからず申し訳ございません。
つまり、今回のデータには該当がなしということですか?
col_1とcol_2の中で最大値でる3のレコードを取得したいわけではなく、col_1の最大値2の中でcol_2の最大値2であるmemberカラムAであるレコードを取得したいという意図でございます。不十分、不明瞭な点があればご指摘ください。よろしくお願い申し上げます。
>col_1の最大値2の中でcol_2の最大値2である
失礼しました。命題を読み違えておりました。
いえ、こちらも記述がわかりづらい部分があり、お詫び申し上げます。
sazi様
ご指摘があった括弧の括りのコードミスを本文で修正しております。
大変失礼しました。
回答1件
あなたの回答
tips
プレビュー