我有一個像下面兩個表:性能的解決方案
表媒體:
+---------------------------------------------------------+
| media_id | media_name | media_category | media_status |
+---------------------------------------------------------+
| 1 | item1 | 2 | true |
| 2 | item2 | 2 | true |
| 3 | item3 | 1 | false |
| 4 | item3 | 1 | false |
| 5 | item3 | 1 | true |
+---------------------------------------------------------+
表類別:
+--------------------+
| cat_id | cat_name |
+--------------------+
| 1 | blue |
| 2 | red |
| 3 | white |
| 4 | green |
+--------------------+
我希望檢索所有類別的相關數量媒體的地位。
所以在我的例子,其結果必然是:
+--------------------------------------------------------------------------------+
| cat_id | cat_name | countMediaTotal | countMediaActive | countMediaInactive |
+--------------------------------------------------------------------------------+
| 1 | blue | 3 | 1 | 2 |
| 2 | red | 2 | 2 | 0 |
| 3 | white | 0 | 0 | 0 |
| 4 | green | 0 | 0 | 0 |
+--------------------------------------------------------------------------------+
我實際的SQL請求:
SELECT *,
(SELECT COUNT(*) FROM media AS MED WHERE CAT.cat_id = MED.media_category) AS countMediaTotal,
(SELECT COUNT(*) FROM media AS MED WHERE CAT.cat_id = MED.media_category AND media_status = 'true') AS countMediaActive,
(SELECT COUNT(*) FROM media AS MED WHERE CAT.cat_id = MED.media_category AND media_status = 'false') AS countMediaInactive
FROM `category` AS CAT
有3個類似的子查詢。
有沒有更強大的解決方案來實現這一目標還是最好的?
什麼是 「最好的」 是什麼意思? (修辭)你對某些查詢表達式有一些天真含糊的概念,這些查詢表達式被日常用語合理地模糊地描述。技術含義涉及在給定背景下的工程權衡。請閱讀「程序優化」和「查詢優化」。你可以從標籤信息開始。 – philipxy
是的,你是對的。我以爲只有演出 – mytom
不幸的是,我所有的評論都適用於其他更具體的單詞,比如「表演」(無論你是什麼意思 - 你表達的是什麼?)或「速度」。任何合理的技術含義都涉及很多因素。 – philipxy