2

次のようなクエリがあります。

SELECT
    id
FROM
    table1
INNER JOIN
    ...
WHERE
    ...
    AND eventtype IN (2000120, 2000121, 2000122, 2000123, 2000130)

EXCEPT

SELECT
    id
FROM
    table1
INNER JOIN
    ...
WHERE
    ...
    AND eventtype IN (2000123,2000130,2000134,2000135)

最後の where 句を除いて、クエリは両方とも同じであることに注意してください。

上記のクエリによって返されるレコードの数を数えたいと思います。

方法?

どうもありがとう

4

3 に答える 3

4

使用COUNTして中に包みますSUBQUERY

SELECT COUNT(ID)
FROM (
        SELECT id
        FROM table1
        INNER JOIN...
        WHERE...
                AND eventtype IN ( 2000120, 2000121, 2000122, 2000123, 2000130 )
        EXCEPT
        SELECT id
        FROM table1
        INNER JOIN...
        WHERE...
                AND eventtype IN ( 2000123, 2000130, 2000134, 2000135 )
        ) s
于 2013-02-08T15:29:45.280 に答える
1

必要なものの最初のクエリが必要なだけです。2000130 値が必要ない場合は含める必要がないため、クエリに表示したくない他の値を含める必要はありません。

SELECT
    id
FROM
    table1
INNER JOIN
    ...
WHERE
    ...
    AND eventtype IN (2000120, 2000121, 2000122, 2000123)

一部のクエリから一部の値を除外する必要がある場合は、使用できます

    AND eventtype NOT IN (2000130)

しかし、一度に両方ではありません。SELECT COUNT(id)必要に応じて、通常の使用またはサブクエリのみをカウントします。

于 2013-02-08T16:03:03.667 に答える