mySQL嵌套查询语法

问题描述 投票:1回答:1

我正在尝试使用嵌套查询方法为mySQL数据库构建查询时查询,但无法正确生成输出。我能够将我的表导入Microsoft Access并构建Query1,然后在Query1上构建Query2以获得我想要的正确输出,所以我感到自己接近了,我只是无法获得正确的语法来获取我正在寻找使用mySQL查询方法的输出。

Query1,这是Access for Query1的SQL语句。

SELECT DISTINCT MediaBuys.DistrictID, MediaBuys.SpenderID, MediaBuys.PG, MediaBuys.SupportType, MediaBuys.PriSupportType 
FROM MediaBuys 
WHERE MediaBuys.PG ="P";

Query2,如果我已经如上所述在Access中构建了Query1,并且在Access中运行了该SQL语句,则它作为基于第一个查询的独立查询,我可以生成我要查找的输出。

SELECT Query1.DistrictID, Query1.SpenderID, Query1.PG, Query1.SupportType, Query1.PriSupportType, Count(Query1.SupportType) AS CountOfSupportType 
FROM Query1 INNER JOIN Query1 AS Query1_1 ON Query1.PG = Query1_1.PG AND Query1.SpenderID = Query1_1.SpenderID AND Query1.DistrictID = Query1_1.DistrictID 
GROUP BY Query1.DistrictID, Query1.SpenderID, Query1.PG, Query1.SupportType, Query1.PriSupportType 
HAVING Count(Query1.SupportType) > 1;

我希望能够通过mySQL中的查询产生相同的输出。由于我拥有这两个查询的SQL语句,因此我觉得这应该可行,因此我尝试以多种不同的方式构建嵌套查询,但每次尝试均失败,看来我无法将正确的语法放在一起。我收到的最常见错误是“错误代码:1146。表'Query1'不存在”。

这在mySQL中是否可行,如果可以的话,有人可以用正确的语法帮助我吗?

mysql
1个回答
1
投票

就像您在Access中创建查询Query1一样,在MySql中创建视图View1

CREATE VIEW View1 AS
SELECT DISTINCT DistrictID, SpenderID, PG, SupportType, PriSupportType 
FROM MediaBuys 
WHERE PG ='P';

您的查询将是:

SELECT 
  View1.DistrictID, View1.SpenderID, View1.PG, View1.SupportType, View1.PriSupportType,
  Count(View1.SupportType) AS CountOfSupportType 
FROM View1 INNER JOIN View1 AS View1_1 
ON View1.PG = View1_1.PG AND View1.SpenderID = View1_1.SpenderID 
AND View1.DistrictID = View1_1.DistrictID 
GROUP BY View1.DistrictID, View1.SpenderID, View1.PG, View1.SupportType, View1.PriSupportType 
HAVING Count(View1.SupportType) > 1;
© www.soinside.com 2019 - 2024. All rights reserved.