我有以下查询:
select a.clei, a.partNumber,
(
SELECT count(*) FROM
( SELECT * from search_upload_data s where a.clei is not null AND a.clei = s.clei
UNION
SELECT * from search_upload_data s where a.partNumber is not null AND a.partNumber = s.partNumber
) as t1
) as total
from api_analytics_data a
它抛出错误:
Error Code: 1054. Unknown column 'a.clei' in 'where clause'
我猜 MySQL 不允许在内部 SQL 中进行连接引用,但我不知道如何解决这个问题。
我需要来自 search_upload_data 的计数,请参阅此处的 SQL Fiddle:http://sqlfiddle.com/#!9/172ac/2
<================================================== ===========================>
附加说明
我需要弄清楚如何使用 UNION 来做到这一点。每个人的答案中的 OR 条件在小范围内有效,但在具有大量数据的实际数据库中陷入困境。
以下是解释(Rajat 的回答):
最佳答案
尝试一下:使用 OR
和 GROUP BY
进行简单连接
SELECT a.clei,
a.partNumber,
COUNT(1) tot
FROM api_analytics_data a
LEFT JOIN search_upload_data s ON (a.clei = s.clei OR a.partNumber = s.partNumber)
AND (a.clei is not null OR a.partNumber is not null)
GROUP BY a.clei, a.partNumber
关于MySQL where 子句中的未知列(UNION),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50383957/