[英]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.