【问题标题】:MYSQL subquery error "Operand should atleast contain one column"MYSQL 子查询错误“操作数应至少包含一列”
【发布时间】:2013-05-03 07:14:33
【问题描述】:

我的 SQL 查询出错;

mysql_query("
SELECT * from houses 
WHERE pcode=(
   SELECT outcode,(SQRT((pow((`x` -$x),2)) + (pow((`y` -$y),2)))) AS `distance` 
   FROM hwz_postcodes 
   WHERE `x` BETWEEN $xnegexp AND $xplusexp 
   AND `y` BETWEEN $ynegexp AND $yplusexp 
   ORDER BY `distance`
)");

基本上有 2 张表,其中一张表包含带有相应邮政编码的房屋列表,另一张表是邮政编码列表。我的查询基本上将邮政编码与附近的邮政编码进行比较,并显示附近的房屋。

子查询成功找到最近的邮政编码并按距离顺序列出它们。现在我可以把它放到一个while循环中,然后在其中执行另一个查询来查看houses表,但是效率不高。

任何人都可以提出查询的解决方案,记住初始子查询结果需要按距离排序,其中距离由显示的平方根公式规定。

提前致谢!!

【问题讨论】:

  • 您要求 pcode 等于 outcode AND 距离。那是行不通的。

标签: mysql subquery


【解决方案1】:

也许你想要这样的东西......

 SELECT h.*
      , p.*
   FROM houses h
   JOIN hwz_postcodes p
     ON p.outcode = h.pcode
  WHERE p.x BETWEEN $xnegexp AND $xplusexp 
    AND p.y BETWEEN $ynegexp AND $yplusexp;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多