1

私のテーブルの内容:

id  aid
----------
1   1
2   2
3   2
4   4
5   4

my sql:(1,2,3,4)group inaidのテーブルからcount(*)を選択します

結果:

count(*)
----------
1
2
2

結果が欲しい:

count(*)
----------
1
2
0
2

援助が1、2、3、4のときにカウント結果が欲しい。どのSQLを使用する必要がありますか?手伝ってくれてありがとう。(私はMySQLを使用しています)</ p>

4

3 に答える 3

1
-- your data
DECLARE @Data TABLE (Id int, Aid int)
INSERT INTO @Data VALUES
(1,1),
(2,2),
(3,2),
(4,4),
(5,4);

DECLARE @Relevant TABLE (Id int )
INSERT INTO @Relevant VALUES (1),(2),(3),(4);

-- the query
SELECT Relevant.Id, COUNT(Data.Aid)
FROM @Data Data
RIGHT JOIN @Relevant Relevant ON Data.Aid = Relevant.Id
GROUP BY Data.Aid, Relevant.Id
于 2012-08-09T08:47:06.453 に答える
0

明白なステートメントの時間:-データを「魔法のように表示」することはできません。出力に表示するには、データがどこかに存在する必要があります。

これは、のカウントが必要な場合に関連し0ますaid = 3。のレコードがないため、aid = 3カウントできません。存在しないデータであるため、出力に表示されることはありません。したがって、それを強制的に存在させる必要があります。

すべてのエンティティを一覧表示するテーブルがある場合は、 ...aidで簡単に実行できます。LEFT JOIN

SELECT
  aid.id,
  COUNT(yourDataTable.aid) AS data_count
FROM
  aid
LEFT JOIN
  yourDataTable
    ON aid.id = yourDataTable.aid
WHERE
  aid.id IN (1,2,3,4)
GROUP BY
  aid.id

(フィールドが存在するレコードはカウントさCOUNT(yourDataTable.aid)れませNULL。したがって、3現在は存在し、COUNT()は戻ることができ0ます。)

于 2012-08-09T08:46:47.373 に答える
0

お役に立てれば


SELECT COLUMN_VALUE, COUNT(BT.AID)
  FROM SO_BUFFER_TABLE_15 BT, TABLE(SYS.DBMS_DEBUG_VC2COLl(1, 2, 3, 4))
 WHERE BT.AID(+) = COLUMN_VALUE
 GROUP BY COLUMN_VALUE
 ORDER BY COLUMN_VALUE

于 2012-08-09T09:01:16.597 に答える