非常に単純なケースで問題を再現できます..
説明1 つの列を
持つ非常に単純なテーブルがあります。my_table
column1
create table my_table (column1 varchar(58));
この列にはほとんど値がありませんが、これNULL
もその 1 つです。
insert into my_table (column1) values ('value1'), ('value1'), ('value2'), (null), ('value2');
問題
クエリを実行しようとすると、 group by column1
すべてNULL
の s をグループ化することで期待どおりの結果が得られます。ただし、次のようなwhere
句を追加するとcolumn1
select count(1) as value_count, column1 from my_table where column1 <> 'value1' group by column1;
両方value1
を無視しておりNULL
、無視することを期待していた場所のみを無視していvalue1
ます。
この単純なケースでは、条件を追加することでこれを回避できますがOR
、元のケースにこの条件を追加するのは本当に面倒です。
誰かがこの動作の理由と、これを修正する方法をよりよく説明できますか?