ホームページ  >  記事  >  バックエンド開発  >  Mysqlの名前によるグループ化が最大の値を持っています。助けてください。ソリューションのアイデア

Mysqlの名前によるグループ化が最大の値を持っています。助けてください。ソリューションのアイデア

WBOY
WBOYオリジナル
2016-06-13 12:08:45904ブラウズ

Mysqlは名前でグループ化されており、最大の値がわかりません。
select a.* from test a where 1 > (select count(*) from test where name = a.name and val > a.val )
SQL ステートメント、名前でグループ化して最大の val を表示value フィールド
質問: select count(*) from test where name = a.name and val > a.val サブクエリは数値ではありませんか? SQL ステートメントは
select a.* from test a where 1 >1 になるのではありませんか? しかし、このロジックは明らかに間違っています。では、正しいロジックは何でしょうか?外層と内層を比較するとどうなるでしょうか?理解するには IQ が足りないような気がします、、、、
-----解決策のアイデア-------- ---
val の最大値を求めると count(*) は 0 になります。1>0 だけで十分ではないでしょうか?
-----解決案 -- ---------- ----------
a.val が最大値の場合
val > a.val が true ではない (select count; (*) name = a.name および val > a.val のテストから) 0 (一致するレコードなし) を返します
1 > (name = a.name および val > のテストから count(*) を選択します) a.val )
は true、レコードが選択されています

実際、すでにご存知ですが、
select a.* from test a where という回り道をしていないだけです。 1 > count
count は a.val より大きいすべてのレコードです。conut が 0 に等しい場合にのみ存在します。式 1 > 0 は

を保持します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。