mysql - where子句中的MySQL未知列(UNION)
问题描述
我有以下查询:
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 条件都在小范围内起作用,但在具有大量数据的实际数据库中陷入困境。
这是解释(对于拉贾特的回答):
解决方案
试试这个:简单加入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
推荐阅读
- java - Gson HTTP 响应对象
- android - 获取注册令牌 GCM 与 FCM
- r - 如何为 Shiny 数据表添加列边框?
- resharper - 如何从我的包中禁用特定的 Visual Studio 命令?
- php - 比较一个图像和另一个图像 PHP
- python - 给定文档集群,计算语料库和集群之间的相似度
- python - 使用 Selenium 和 Python 无法单击按钮
- php - Informix 从其他查询生成查询(评估结果到 SELECT) - PHP 和 Informix
- java - for 循环中的 Microsoft SQL Server Prepared 语句不起作用
- python - 在 docker 中使用 DataStax cassandra 驱动程序出现无效标头错误