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 は