Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySQL嵌套查询语法_Mysql - Fatal编程技术网

mySQL嵌套查询语法

mySQL嵌套查询语法,mysql,Mysql,我试图使用嵌套查询方法为mySQL数据库的查询构建查询,但未能正确生成输出。我能够将我的表导入到Microsoft Access中,然后构建Query1,然后在Query1上构建Query2,以获得我所寻找的正确输出,因此我感觉我已经接近了,我只是无法使用mySQL查询方法获得正确的语法以获得我所寻找的输出 Query1,下面是Access针对Query1的SQL语句 SELECT DISTINCT MediaBuys.DistrictID, MediaBuys.SpenderID, Media

我试图使用嵌套查询方法为mySQL数据库的查询构建查询,但未能正确生成输出。我能够将我的表导入到Microsoft Access中,然后构建Query1,然后在Query1上构建Query2,以获得我所寻找的正确输出,因此我感觉我已经接近了,我只是无法使用mySQL查询方法获得正确的语法以获得我所寻找的输出

Query1,下面是Access针对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中可行吗?如果可行,有人可以帮助我使用正确的语法吗?

就像您在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;

看,这正是我想要的,非常感谢你花时间帮助我解决我的问题。