簡體   English   中英

多列mysql子查詢

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

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