1

クエリがたくさんありますが、1つにまとめて最適化できますか?

  1. SELECT COUNT(prod_id) FROM products WHERE inventory <= 5 AND cat_id = 1
  2. SELECT COUNT(prod_id) FROM products WHERE inventory BETWEEN 5 AND 10 AND cat_id = 1
  3. SELECT COUNT(prod_id) FROM products WHERE inventory > 10
4

4 に答える 4

2

これはあなたのために働くはずだと思います。1つのSQLステートメントで3つのカウントを返します。

SELECT SUM(CASE WHEN inventory <= 5 AND cat_id = 1 THEN 1 ELSE 0 END) Q1Result,
   SUM(CASE WHEN inventory BETWEEN 5 AND 10 AND cat_id = 1 THEN 1 ELSE 0 END) Q2Result,
   SUM(CASE WHEN  inventory > 10 THEN 1 ELSE 0 END) Q3Result
FROM products 

そして、これがSQLFiddleです。

幸運を。

于 2013-02-07T03:23:08.137 に答える
1
SELECT COUNT(prod_id) FROM products WHERE inventory <= 5 AND cat_id = 1
UNION ALL
SELECT COUNT(prod_id) FROM products WHERE inventory BETWEEN 5 AND 10 AND cat_id = 1
UNION ALL
SELECT COUNT(prod_id) FROM products WHERE inventory > 10

クエリから複数の行をすべて1つの大きな長いリストに戻します。

于 2013-02-07T03:21:25.570 に答える
0

これを試してみてください

デモ

SELECT  (
    SELECT COUNT(prod_id) FROM products WHERE inventory <= 5 AND cat_id = 1
    ) AS count1,
    (
    SELECT COUNT(prod_id) FROM products WHERE inventory BETWEEN 5 AND 10 AND cat_id = 1
    ) AS count2,
    (
    SELECT COUNT(prod_id) FROM products WHERE inventory > 10
    ) AS count3
于 2013-02-07T03:31:57.187 に答える
0

あなたが使用することができます:

select sum( x ) from query 1 union query 2  etc
于 2013-02-07T03:21:17.677 に答える