1

Linux on x86_64 (MySQL Community Server (GPL))用のmysql Ver 8.0.3-rcを使用しています。

列名にテーブルとフルテキスト インデックスを作成する

CREATE TABLE `title` (
  `id` smallint(4) unsigned NOT NULL PRIMARY KEY,
  `name` text COLLATE utf8_unicode_ci,
  FULLTEXT idx (name) WITH PARSER ngram
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

いくつかのデータを挿入します。

insert into `title` values(14,"I'm flying in for the game (one night in Niagara Falls, NY and one night in Buffalo then back home).");
insert into `title` values(23,"I've never been to the area.");
insert into `title` values(43,"Where and what must I eat (Canadian side of Niagara, American side and Buffalo)?");
insert into `title` values(125,"Don't really have much planned other than the Falls and the game.");

実行時:

select
    id,
    round(MATCH (name) AGAINST ('other than the'),2) scope
from title;

結果 (すべて OK):

id  | scope
----------
14  | 0.43
23  | 0.23
43  | 0.12
125 | 1.15

従来のGROUP BYを使用する場合- すべて問題ありません

select
    max(scope),
    min(scope),
    sum(scope)
from
(
    select id, round(MATCH (name) AGAINST ('other than the'),2) scope
    from title
) a;

結果OK:

max  |  min | sum
----------------
1.15 | 0.12 | 1.96

しかし、ウィンドウ関数使用しようとすると、結果がわかりません:

select
    id,
    max(scope) over(),
    min(scope) over(),
    sum(scope) over()
from
(
    select id, round(MATCH (name) AGAINST ('other than the'),2) scope
    from title
) a;

奇妙な結果が得られます (なぜ? ):

id | max  |  min | sum
------------------------
14 | 1.15 | 1.15 |  4.60
23 | 1.15 | 1.15 |  4.60
43 | 1.15 | 1.15 |  4.60
125| 1.15 | 1.15 |  4.60

次のようにして、古典的なグループと同様の結果を得たいと考えています。

id | max  |  min | sum
------------------------
14 | 1.15 | 0.12 |  1.96
23 | 1.15 | 0.12 |  1.96
43 | 1.15 | 0.12 |  1.96
125| 1.15 | 0.12 |  1.96

これは mysql Ver 8.0.3-rcのバグですか、それともクエリが正しくありませんか? ありがとう!

4

2 に答える 2