2

SQL クエリに関するヘルプが必要です。まず、次の構造のデータベースがあります(例):

ID NAME VALUE
123 ABC_A Text Text Text
123 ABC_A Some more Text
123 ABC_A さらに Text
123 ABC_B some other text

今、「ABC_A」という名前の行のさまざまな値をすべて取得したいと考えています。group by と having を介してそれらを取得しようとしましたが、成功しませんでした。

4

4 に答える 4

4

これは、あなたの望むことですか?

SELECT DISTINCT Value
FROM tableName
WHERE ID = 123 AND Name = 'ABC_A'

ただし、ID と Name の値が一意である場合は省略 distinctできます(サーバーの過剰な処理を避けるため) 。

SELECT Value
FROM tableName
WHERE ID = 123 AND Name = 'ABC_A'
于 2012-09-25T12:32:04.220 に答える
2

「ABC_A」という名前の行のすべての異なる値を取得したい

これは、たとえば次のようになります。

SELECT value, count(value) FROM tbl WHERE name = 'ABC_A' GROUP BY value;

1つの値が表示される回数が必要ない場合は、値を削除するか、次を使用しますDISTINCT

SELECT DISTINCT value FROM tbl WHERE name = 'ABC_A';

IDごとに異なる行の値も必要な場合は、

SELECT value, count(value)
    FROM tbl
    WHERE id = 123 AND name = 'ABC_A'
    GROUP BY value;

または、異なる値(重複も含む)を「ALL」にする場合は、GROUP BY(およびを使用できなくなりますcount()。これは常に1になります)。

SELECT value FROM tbl WHERE id = 123 AND name = 'ABC_A';
于 2012-09-25T12:34:49.520 に答える
2

Johnに加えて、キーワードDistinctを使用すると、異なる値が得られます。したがって、

SELECT DISTINCT Value
FROM tableName
WHERE ID = 123 AND
        Name = 'ABC_A'
于 2012-09-25T12:36:18.903 に答える
2

このGROUP BYステートメントは、集計関数と組み合わせて使用​​され、結果セットを1つ以上の列でグループ化します。
上記の場合、なぜ単純なwhere句を使用しないのですか?

select * from <tableName> where name ='ABC_A'
于 2012-09-25T12:38:15.067 に答える