php - 删除具有相同列值的行

标签 php mysql unique distinct

我正在从邮政编码表中查询一堆城市。我只想通过独特的“城市”获取结果。 (很多城市都有多个邮政编码。)这怎么办?

    $query = sprintf("SELECT `Zip`, `City`, `State`, `Lat`, `Long`, 
             ( 3959 * acos( cos( radians('%s') ) * cos( radians( `Lat` ) ) * 
             cos( radians( `Long` ) - radians('%s') ) +
             sin( radians('%s') ) * sin( radians( `Lat` ) ) ) ) AS distance 
             FROM Zips HAVING distance < '%s' ORDER BY distance LIMIT 0 , 18",
      mysql_real_escape_string($lat),
      mysql_real_escape_string($lng),
      mysql_real_escape_string($lat),
      mysql_real_escape_string($radius));
    $result = mysql_query($query, $dbConn);

最佳答案

您在错误的地方使用了HAVING,这里需要WHERE并使用GROUP BY按城市对结果进行分组

 $query = sprintf("SELECT `Zip`, `City`, `State`, `Lat`, `Long`, ( 3959 * acos( cos(
 radians('%s') ) * cos( radians( `Lat` ) ) * cos( radians( `Long` ) - radians('%s') ) + sin(
 radians('%s') ) * sin( radians( `Lat` ) ) ) ) AS distance FROM Zips WHERE distance < '%s'  
 GROUP BY City ORDER BY distance LIMIT 0 , 18",

编辑

你也可以尝试

     $query = sprintf("SELECT `Zip`, `City`, `State`, `Lat`, `Long`, ( 3959 * acos( cos(
     radians('%s') ) * cos( radians( `Lat` ) ) * cos( radians( `Long` ) - radians('%s') ) + sin(
     radians('%s') ) * sin( radians( `Lat` ) ) ) ) AS distance FROM Zips HAVING distance < '%s'  
     GROUP BY City  ORDER BY distance LIMIT 0 , 18";

或者

$query = sprintf("SELECT * FROM (SELECT `Zip`, `City`, `State`, `Lat`, `Long`, ( 3959 * acos( cos(
     radians('%s') ) * cos( radians( `Lat` ) ) * cos( radians( `Long` ) - radians('%s') ) + sin(
     radians('%s') ) * sin( radians( `Lat` ) ) ) ) AS distance FROM Zips HAVING distance < '%s'  
     ORDER BY distance LIMIT 0 , 18 ) as result_set GROUP BY City";

关于php - 删除具有相同列值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5590814/

相关文章:

java - 在java中从字符串数组中存储13个不重复的随机值

php字符串结束标识

php - 如何更好地在 MySQL 表中使用 PHP 代码前缀?

php - 使用 php 进行 MySQL 搜索查询

php - 根据ID将数据库表数据拆分到不同的数组中

validation - yii2 关于唯一属性的更新操作

php - mysql查询未知列错误

php - 比较不同表中的行

php - 如何根据 SQL/php 中另一列的多个值从一列中选择单个值

copy - 使用 COPY 查询在 Vertica 中插入唯一记录