假設在表A中,我有很多行,列值爲a,b,c,d。獲取相同查詢限制的行數和行數的總數
其中,我想要10行的列值爲'c',同時還要計算列值爲'c'的行的總數。
我想:
select count(*),* from A where column like 'c'; (without limit)
select count(*),* from A where column like 'c' limit 10;
這甚至可能嗎?或者我將不得不解僱兩個查詢。
假設在表A中,我有很多行,列值爲a,b,c,d。獲取相同查詢限制的行數和行數的總數
其中,我想要10行的列值爲'c',同時還要計算列值爲'c'的行的總數。
我想:
select count(*),* from A where column like 'c'; (without limit)
select count(*),* from A where column like 'c' limit 10;
這甚至可能嗎?或者我將不得不解僱兩個查詢。
SELECT n.*, AA.cnt
FROM nei_product_background_category c
INNER JOIN nei_backgrounds n ON n.background_id = c.background_id
INNER JOIN (
SELECT cc.product_id, COUNT(*) AS cnt
FROM nei_product_background_category cc
INNER JOIN nei_backgrounds nn ON nn.background_id = cc.background_id
GROUP BY cc.product_id
) AA ON c.product_id = AA.product_id
WHERE
c.product_id = 578
LIMIT 10
給我一個錯誤。 「錯誤1064(42000):您的SQL語法錯誤;查看與您的MySQL服務器版本相對應的手冊,以找到正確的語法,以便在'SELECT nei_backgrounds。*,AA.cnt INNER JOIN(SELECT background_id,COUNT( *)AS'位於第1" 行 – 2013-02-17 16:48:29
將烏約腦海發佈完整查詢你的問題嗎? – Sebas 2013-02-17 16:49:20
選擇nei_backgrounds。*,AA.cnt FROM nei_backgrounds INNER JOIN( SELECT background_id,COUNT(*)AS'cnt' FROM nei_backgrounds WHERE background_id在 GROUP BY background_id )AA ON nei_backgrounds.column = AA.column (從nei_product_background_category其中PRODUCT_ID = 578選擇background_id)WHERE nei_backgrounds.column(從nei_pro選擇background_id duct_background_category其中的product_id = 578) LIMIT 10 – 2013-02-17 16:56:47
您可以使用'union'但爲什麼不簡單地運行兩個查詢。 – 2013-02-17 16:53:21
會觸發2個查詢比一個查詢更好? – 2013-02-17 16:57:24
取決於您的申請。兩個查詢可能會導致競爭條件風險(如果兩者之間發生某些變化,這兩個結果可能會有所不同)。但在你的問題中,我沒有看到'c'行(沒有其他約束或排序)以及總數同時獲得的興趣。 – 2013-02-17 17:02:01