テーブルから異なるフィールドの異なる値ごとに最大値を示す値を抽出しようとしています。たとえば、データセットだった場合:mysqlの値に最大数があります
a x
a x
a y
b x
b y
c x
c y
c y
クエリが
a x 2
b x 1
c y 2
私の実験は、以下を使用しもたらすであろう:
CREATE TABLE IF NOT EXISTS `maxcount` (
`what` varchar(1) DEFAULT NULL,
`loc` varchar(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
と
INSERT INTO `maxcount` (`what`, `loc`) VALUES
('a', 'x'),
('a', 'x'),
('a', 'y'),
('b', 'x'),
('b', 'y'),
('c', 'x'),
('c', 'y'),
('c', 'y');
最初一部は簡単:
私がまだ理解していないのは、最大数と最大値を持つlocの値を示す "what"ごとに1行を取得する方法です。
ソリューションではありません:
select what, loc, max(howmany) from (
select what, loc, count(loc) howmany from maxcount group by what, loc)
A group by what;
は、それが生み出すので:
a x 2
b x 1
c x 2
ご案内はありがたく受け入れ!
ジョージ
...それは助け... BXかによっては、このクエリにも同様に可能であることに注意してください願っています' – geoB
あなたが最も外側のグループの中で' loc'をまだ選択していますが、あなたはまだ何もしていないので、 'loc'を選択しています。グループで集計されていないため、正しい結果を返すことが保証されていません。シンプルなスキーマではうまくいくかもしれませんが、大きなテーブルで問題が発生します。 – piotrm
ありがとうございます。私の解決策は私の現実世界の問題ではうまくいかないと思った。 – geoB