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_Subquery - Fatal编程技术网

返回多行的Mysql子查询

返回多行的Mysql子查询,mysql,subquery,Mysql,Subquery,我试图获得一定纬度和经度范围内的邮政编码,然后使用返回的邮政编码拉取给定区域内的所有邮件。纬度和经度的数字是变量,但出于测试目的,它们是硬数字。 有人能给我指引正确的方向来完成这项工作吗 查询#1-works选择post SELECT user_id, session, zip, price, city, state, post_id, category, shortDesc, fpi FROM post ORDER BY post.post_id DESC; 查询#2-works选择区域

我试图获得一定纬度和经度范围内的邮政编码,然后使用返回的邮政编码拉取给定区域内的所有邮件。纬度和经度的数字是变量,但出于测试目的,它们是硬数字。 有人能给我指引正确的方向来完成这项工作吗

查询#1-works选择post

SELECT user_id, session, zip, price, city, state, post_id, category, shortDesc,  fpi 
FROM post ORDER BY post.post_id DESC;
查询#2-works选择区域中的邮政编码

SELECT count(value) as duplicate, value 
from (SELECT DISTINCT zipcode as value from zip 
  WHERE latitude BETWEEN 27.747 AND 28.147 
  UNION all 
   SELECT DISTINCT zipcode FROM zip 
   WHERE longitude BETWEEN -82.657 AND -82.257) 
as tbl group by value having count(value) > 1;
作为子查询的查询

尝试:失败

SELECT user_id, session, zip, price, city, state, post_id, category, shortDesc,  fpi 
FROM post 
WHERE zip = (
  SELECT count(value) as duplicate ,value 
  from (SELECT DISTINCT zipcode as value from zip 
    WHERE latitude BETWEEN 27.747 AND 28.147 
    UNION all SELECT DISTINCT zipcode FROM zip 
     WHERE longitude BETWEEN -82.657 AND -82.257) 
  as tbl group by value having count(value) > 1) 
ORDER BY post.post_id DESC;
错误#1241-操作数应包含1列

下一次尝试:失败

SELECT user_id, session, zip, price, city, state, post_id, category, shortDesc,  fpi 
FROM post WHERE zip = (select distinct zipcode from zip 
  where latitude between 27.747 AND 28.147) 
  IN ( select distinct zipcode from zip 
    where longitude between -82.657 AND -82.257);
1242-子查询返回超过1行

下一次尝试:失败

SELECT user_id, session, zip, price, city, state, post_id, category, shortDesc,  fpi 
FROM post 
WHERE zip = ANY (
  select distinct zipcode from zip 
  where latitude between 27.747 AND 28.147) 
IN ( select distinct zipcode from zip 
     where longitude between -82.657 AND -82.257);
1064-您的SQL语法有错误

这应该行得通:

SELECT user_id, session, zip, price, city, 
  state, post_id, category, shortDesc, fpi 
FROM post WHERE zip in (SELECT DISTINCT zipcode as value 
                                      from zip 
                                    WHERE latitude BETWEEN 27.747 AND 28.147 
                                    and longitude BETWEEN -82.657 AND -82.257)
   ORDER BY post.post_id DESC;

我不知道你想要什么

试试这个

select user_id, session, zip, price, city, state, post_id, category, shortDesc,  fpi 
FROM post WHERE zip in
(SELECT DISTINCT zipcode from zip where 
(latitude BETWEEN 27.747 AND 28.147) AND (longitude BETWEEN -82.657 AND -82.257))

这似乎对我拥有的数据集有效。我只是很难理解为什么不必在和的两侧指定它,以便获得在两个数据集中都显示的值。不理解这个问题的答案很好。谢谢