簡體   English   中英

聯合所有的子查詢計數

[英]Subquery count with union all

我的查詢從3個表中選擇數據,並將結果設置為“ title”(其中一個表具有“ description”作為我需要查看的列)。 我還創建了一個結果“ doctype”,其值表示后來發現該表用於前端過濾器。 然后按以下順序排序:

  1. 結果以搜索詞開頭
  2. 結果在中間某處包含搜索詞
  3. 結果以搜索詞結尾

我需要獲取查詢中每個子查詢的計數:

SELECT * FROM (
    SELECT Title as title, 'docs' AS 'doctype' FROM docs 
    WHERE status IN ('publish', 'draft', 'review') AND Title LIKE '%' :searchterm '%'
UNION ALL
    SELECT Title as title, 'sheets' AS 'doctype' FROM sheets 
    WHERE status IN ('publish', 'draft', 'review') AND Title LIKE '%' :searchterm '%'
UNION ALL 
  SELECT Description AS title, 'pres' AS 'doctype' from presentations 
  WHERE status IN ('publish', 'draft', 'review') AND Description LIKE '%' :searchterm '%'
) FINAL
    ORDER BY
      CASE
        WHEN title LIKE :searchterm '%' THEN 1
        WHEN title LIKE '%' :searchterm THEN 3
        ELSE 2
      END
    LIMIT 300

並確認可以在ORDER BY中使用別名(“ title”)。

在您的子查詢中添加計數字段和groupby子句

更新

SELECT 
(SELECT count(*) FROM docs WHERE status IN ('publish', 'draft', 'review') AND Title LIKE '%' :searchterm '%') as 'count_docs'
,(SELECT count(*) FROM sheets WHERE status IN ('publish', 'draft', 'review') AND Title LIKE '%' :searchterm '%') as 'count_sheets'
,(SELECT count(*) FROM presentations WHERE status IN ('publish', 'draft', 'review') AND Description LIKE '%' :searchterm '%') as 'count_pres'
, FINAL.*
FROM (
    SELECT Title as title, 'docs' AS 'doctype' FROM docs 
    WHERE status IN ('publish', 'draft', 'review') AND Title LIKE '%' :searchterm '%'
UNION ALL
    SELECT Title as title, 'sheets' AS 'doctype' FROM sheets 
    WHERE status IN ('publish', 'draft', 'review') AND Title LIKE '%' :searchterm '%'
UNION ALL 
  SELECT Description AS title, 'pres' AS 'doctype' from presentations 
  WHERE status IN ('publish', 'draft', 'review') AND Description LIKE '%' :searchterm '%'
) as FINAL
    ORDER BY
      CASE
        WHEN title LIKE :searchterm '%' THEN 1
        WHEN title LIKE '%' :searchterm THEN 3
        ELSE 2
      END
    LIMIT 300

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM