15
A B C
1 1 1 
1 1 1 
2 2 2 
2 2 2 
3 3 3 
3 3 3 
4 4 4 
4 4 4 
5 5 5 
5 5 5 
5 5 5 
6 6 6
6 6 6 

group by ステートメントを使用せずに、個別の行のみを出力します。mysql がハングアップするため、group by を使用できません。だから返すべき

1 1 1
2 2 2 
3 3 3 
4 4 4 
5 5 5 
6 6 6 

内部結合に DISTINCT を使用しています。これも機能しません。

SELECT DISTINCT * FROM TABLEA inner join TABLEB on TABLEA.A = TABLEB.A 
4

4 に答える 4

17
SELECT DISTINCT A,B,C FROM TABLE;

mysqlのドキュメントによると、DISTINCTは、結果セットから重複する行を削除することを指定しています(http://dev.mysql.com/doc/refman/5.0/en/select.html

jsfiddleでサンプルを作成しましたが、IMHOで動作します

create table tablea (A int,B int,C int);
create table tableb (A int);

INSERT INTO tablea VALUES (1,1,1),(1,1,1),(2,2,2),(2,2,2),(3,3,3),(3,3,3),(4,4,4),(4,4,4),(5,5,5),(5,5,5),(5,5,5),(6,6,6),(6,6,6);
INSERT INTO tableb VALUES (1),(1),(1),(1),(1);

SELECT DISTINCT tablea.A,tablea.B,tablea.C FROM tablea INNER JOIN tableb ON tablea.A=tableb.A;

このSQLFiddleを自由に試してみてください。

于 2012-06-06T21:19:35.353 に答える
2

あなた (または他の誰か) が本当に DISTINCT または GROUP BY ステートメントを使用せずに個別の結果を取得したい場合は、次の方法があります。

SELECT
    a.name
FROM person a
LEFT JOIN person b
    ON (a.name = b.name OR (a.name IS NULL AND b.name IS NULL))
    AND a.id < b.id
WHERE b.id IS NULL

とはいえ、それはかなり風変わりなものです。

于 2015-11-20T16:15:45.553 に答える
1

DISTINCT キーワードは、必要なことを行います。つまり、テーブルの名前が A の場合、select distinct * from Aうまくいきます。

参照。mysql マニュアル: http://dev.mysql.com/doc/refman/5.0/en/select.html

于 2012-06-06T21:20:53.293 に答える