0

このクエリは、私が期待するものを返しません。なんで?

テーブル:

create table t
(
    comment varchar(10),
    id int
);

データ:

insert into t values ('C1', 1);
insert into t values ('C2', 2);
insert into t values ('C3', 3);
insert into t values ('C4', 4);
insert into t values ('C5', 5);
insert into t values ('C6', 6);
insert into t values ('C7', 7);
insert into t values ('C8', 8);
insert into t values ('C9', 9);
insert into t values ('C1', 10);

クエリ:

select distinct comment from t order by id desc limit 8;

結果:

C9
C8
C7
C6
C5
C4
C3
C2

DISTINCTを除外すると、最後の行が取得されますが、重複を抑制したいと思います。私の回避策は正しい結果セットを返します:

select comment from t group by comment order by max(id) desc limit 8;

しかし、クエリが有効でないかどうか知りたいです(たとえば、T-SQLでは、順序付けられた列が選択リストにない限り、1つのクエリでDISTINCTとORDER BYの両方を許可しません)?

4

1 に答える 1

0

C1は重複しているため、選択対象外であると思います。また、SQLでこの重複を1ではなくID 10で選択していると思います。そのため、IDは2から9になります(合計で8になります)。 dはSQLから制限8)で尋ねられました。私の理論が正しいかどうか確認してください。ID 1のレコード、次の重複なし、次のID2、重複なし、OK ...、ID10のようなワークフローだと思います-ID1の重複であり、ID 1のレコードを削除し、ID10のレコードを追加します...

于 2013-09-11T20:10:59.417 に答える