[英]Subquery count with union all
我的查询从3个表中选择数据,并将结果设置为“ title”(其中一个表具有“ description”作为我需要查看的列)。 我还创建了一个结果“ doctype”,其值表示后来发现该表用于前端过滤器。 然后按以下顺序排序:
我需要获取查询中每个子查询的计数:
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.