2

null エントリの列があります。たとえば、この列で可能な値は次のとおりです。None, 1, 2, 3

列内の一意のエントリの数をカウントすると、session.query(func.count(distinct(Entry.col))).scalar()「3」が返されます。

しかし、 でカウントを実行するとsession.query(Entry.col).distinct().count()、「4」が返されます。

後者のメソッドは をカウントするNoneのに、最初のメソッドはカウントしないのはなぜですか?

4

2 に答える 2

1

MySQL COUNT は NULL 値をカウントしないため、NULL 値を持つフィールドで値をカウントしている場合、その行は COUNT でカウントされません。

DISTINCT は異なる値の数だけを返すため、NULL が含まれます。

于 2013-09-16T07:19:05.900 に答える