gpt4 book ai didi

MySQL - 如何使用左连接从 on 子句中的连接表中精确获取一行?

转载 作者:行者123 更新时间:2023-11-29 08:48:33 24 4
gpt4 key购买 nike

我希望问题足够清楚。

这是我的查询:

SELECT
'Total Complete' AS name, count(c.id) AS amnt
FROM
lanes AS c
LEFT JOIN leads AS l
ON ((c.carrier_mcn = l.authority_number
AND l.authority_type = 'mc')
OR c.carrier_mcn = l.mcn
OR c.carrier_mcn = CONCAT('MC', l.authority_number))
AND c.carrier_mcn <> 0
LEFT JOIN lanes_emails AS cem1
ON cem1.cid = c.id AND cem1.deleted = 0
LEFT JOIN lanes_emails AS cem2
ON cem1.cid = cem2.cid AND cem2.deleted = 0 AND cem2.id < cem1.id
LEFT JOIN lanes_equipment AS ceq1
ON ceq1.cid = c.id AND ceq1.deleted = 0
LEFT JOIN lanes_equipment AS ceq2
ON ceq1.cid = ceq2.cid AND ceq1.deleted = 0 AND ceq2.id < ceq1.id
LEFT JOIN lanes_service_area AS csa1
ON csa1.cid = c.id AND AND flag = 2 csa1.deleted = 0
LEFT JOIN lanes_service_area AS csa2
ON csa1.cid = csa2.cid AND AND flag = 2 csa1.deleted = 0 AND csa2.id < csa1.id
WHERE
c.carrier_mcn IS NOT NULL and c.carrier_mcn <> ''
AND c.broker_mcn IS NOT NULL and c.broker_mcn <> ''
AND c.fax IS NOT NULL and c.fax <> ''
AND cem2.id IS NOT NULL
AND ceq2.id IS NOT NULL
AND csa2.id IS NOT NULL

现在我在这里尝试做的是获取至少有一个电子邮件、设备、服务区域、MC 号码或传真号码的“ channel ”的总行数。有两个 MC 号码,但它们都在同一张 table 上;主要问题是电子邮件、设备和服务区域可以无限。

在这种情况下,我开始写一篇关于这个问题的文章,并发现了另一个类似的问题:

MySQL: Can I do a left join and pull only one row from the join table?

所以我尝试了一下并将其实现到我的查询中。不幸的是,它并没有按照我的计划进行。

如果我有不止一行,它会工作得很好;它会得到正确的计数,忽略我有多封电子邮件或诸如此类的事实,但如果只有一封,它就不起作用。相反,它没有返回任何结果。

不,我无法使用 GROUP BY 来获得我需要的结果;我尝试过 GROUP BY,我喜欢在返回完整结果列表时使用它,但如果我尝试返回计数 GROUP BY 会反复让我陷入困境。

有什么方法可以强制 mysql 中的联接仅返回一行而不使用子查询吗?我只需要知道这些其他表中是否有一项,我不需要返回所有内容,而且我不知道如何对其进行编程以通过 WHERE 子句工作。

我需要此查询来获取条形图。我实际上有几个这样的疑问;这个是需要所有结果的,但我还有其他没有要求的,至少一封电子邮件,至少一个 mc 号码等,但如果我能让这个工作,我就能让其余的工作。

最佳答案

您可以使用 exists 子句:

where   exists 
(
select *
from lanes_emails AS cem1
where cem1.cid = c.id
and cem1.deleted = 0
)
and exists
...

关于MySQL - 如何使用左连接从 on 子句中的连接表中精确获取一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com