では、このような単純な表で、最も価値の高いタイトルを選択するにはどうすればよいでしょうか。
|_title_||_value_|
|_title1_||_50652_|
|_title2_||_57465_|
|_title3_||_68565_|
|_title4_||_14645_|
この場合のように、title3の値が最も高いので、SQLコードでtitle3を選択したいのですが、方法がわかりません。
私が試したこと:
SELECT title FROM table HAVING MAX(value);
これが私にできる方法だと思いましたが、うまくいきません。私はSQLにまったく慣れていません。
同じ最大値を共有する複数のタイトルを許可する場合は、サブクエリを使用します。
select title from table where value = (select max(value) from table);
編集:あなた自身の質問に関して:
MAX(value)
withoutGROUP BY
句を要求することにより、すべての行を1つの行に集約します。ただし、を選択しますtitle
。どっち?DBMSに通知しないため、クエリは実際には無効なSQLです。ただし、MySQLはこれをスリップさせ、サイレントに適用ANY_VALUE
しtitle
ます。これは、あなたが望むものではありません。あなたは特定のものが欲しいです。
クエリには別の欠陥があります。たとえばHAVING MAX(value)
、比較がありませんHAVING MAX(value) > 1000
。ただし、DBMSは、ブール結果(trueまたはfalseまたはnull)を持つ式を想定しています。式は理想的にはエラーを発生させるはずですが、MySQLは値をfalse = 0、true <> 0のブール値に変換するだけです。68565はゼロではないため、条件はtrueです。
したがって、任意に選択したタイトルを保持する単一の行になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加