1

次のSQLクエリがあります

 SELECT 
(SELECT count(cid) from A where uid=45 group by cid) as cats 
(SELECT count(cid) from A where uid=45) as cats_total

最初のサブ選択は 4 行を生成し、各 cid の項目数をカウントします。2 番目のサブ選択は 1 行のみを生成し、アイテムの合計数をカウントします。

私の問題は、2 番目のサブ選択にあります。行の量が異なるため、SQL でエラーが発生しています。2 番目のサブセレクトが 4 行になるように、または最初のサブセレクトが生成する行数を調整することはできますか?

更新:作成する必要があるテーブルでさらに明確にしましょう

+------+------------+
| cats | cats_total |
+------+------------+
|    2 |         17 |
|    5 |         17 |
|    1 |         17 |
|    9 |         17 |
+------+------------+
4

4 に答える 4

0

別の方法として、を使用できますUNION ALL

SELECT SUM(totals) grandTotal
FROM
(
    SELECT count(cid) totals from A where uid=45 group by cid
    UNION ALL
    SELECT count(cid) totals from A where uid=45
) s
于 2013-03-13T07:42:56.123 に答える
0

2 つのサブクエリをクロス結合できると思います。

SELECT cats, cats_total 
FROM (SELECT count(cid) as cats from A where uid=45 group by cid) as c1 
        CROSS JOIN
     (SELECT count(cid) as cats_total from A where uid=45) as c2
于 2013-03-13T08:12:47.153 に答える
0

あなたが試すことができます

SELECT cats.total, cats_total.total from 
(SELECT count(cid) as total from A where uid=45 group by cid) as cats ,
(SELECT count(cid) as total from A where uid=45) as cats_total
于 2013-03-13T08:59:39.203 に答える
0

カフ そうですね。

ここで誰かが興味を持っているのは、jdbc を介して Oracle db に対してテストされた動作バージョンです。

SELECT cats,cats_total from  
(SELECT count(cid) as cats from A where uid=45 group by cid)
cross join
(SELECT count(cid) as cats_total from A where uid=45)
于 2013-03-13T08:40:12.107 に答える