64

テーブル xyz には、ここに示すように、コンポーネントと呼ばれる行と、labref 番号を持つ labref 行があります。

テーブル xyz

labref             component
NDQA201303001          a
NDQA201303001          a
NDQA201303001          a
NDQA201303001          a
NDQA201303001          b
NDQA201303001          b
NDQA201303001          b
NDQA201303001          b
NDQA201303001          c
NDQA201303001          c
NDQA201303001          c
NDQA201303001          c

コンポーネントをグループ化し、返された行をカウントします。これは 3 に等しくなります。以下の SQL クエリを記述しましたが、目標を達成するのに役立ちませんが、コンポーネントごとに 4 を返します。

SELECT DISTINCT component, COUNT( component ) 
FROM `xyz`
WHERE labref = 'NDQA201303001'
GROUP BY component

クエリが返されます

テーブル xyz

labref         component   COUNT(component)       
NDQA201303001   a           4
NDQA201303001   b           4
NDQA201303001   c           4

私が今達成したいのは、上記の結果から、行がカウントされ、行数として 3 が返されることです。

4

5 に答える 5

141

サブクエリなしで次の単純なクエリを試してください。

SELECT COUNT(DISTINCT component) AS TotalRows
FROM xyz
WHERE labref = 'NDQA201303001';

このSQLFiddleを参照してください

于 2013-05-16T10:22:45.663 に答える
58

あなたがする必要がある -

SELECT
    COUNT(*)
FROM
    (
        SELECT
            DISTINCT component
        FROM
            `multiple_sample_assay_abc`
        WHERE
            labref = 'NDQA201303001'
    ) AS DerivedTableAlias

@hims056 here で提案されているように、サブクエリを回避することもできます

于 2013-05-16T10:10:08.490 に答える