[英]mysql subquery with more than one columns
我正在尝试这样做
SELECT
`projects`.*,
(SELECT
COUNT(`leads`.`id`),
`pixel`.`uuid`,
`pixel`.`project_id`
FROM `leads`
LEFT JOIN `pixel` ON `leads`.`pixel` = `pixel`.`uuid`
WHERE `projects`.`id` = `pixel`.`project_id`
) as leads
FROM `projects`
但是我不能,因为我的子查询选择有不止一列,但是我必须拥有它,这样我才能进行联接,无论如何? (我只需要计数)谢谢。
将correlated Subquery
更改为Inner Join
以显示subquery
所有列
SELECT projects.*,
a.*
FROM projects P
INNER JOIN (SELECT Count(leads.id) Cnt_id,
pixel.uuid,
pixel.project_id
FROM leads
LEFT JOIN pixel
ON leads.pixel = pixel.uuid) A
ON projects.id = A.project_id
我建议您尝试避免子查询:
SELECT
projects.*,
IFNUL(COUNT(leads.id).0) AS Cnt_id
FROM
projects,
LEFT JOIN pixel ON projects.id = pixel.project_id
LEFT JOIN leads ON leads.pixel = pixel.uuid
GROUP BY
projects.id
我怀疑这会快很多。
这就是答案
SELECT
`projects`.*,
(SELECT
COUNT(`pixel`.`project_id`)
FROM `pixel`
WHERE `projects`.`id` = `pixel`.`project_id`) AS `num_pixels`,
(SELECT COUNT(`leads`.`id`) FROM `leads`
LEFT JOIN `pixel` ON `leads`.`pixel` = `pixel`.`uuid`
WHERE `projects`.`id` = `pixel`.`project_id`) AS `num_leads`
FROM `projects`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.