美文网首页
mysql常用语句及问题处理

mysql常用语句及问题处理

作者: woann | 来源:发表于2017-11-22 15:42 被阅读0次

    1.允许远程登录

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 
    

    2.mysql端口为0

     1. mysql> show variables like 'port';  
     2. my.cnf注释skip-networking  
    

    3.检查某字段是否存在重复值

    select number from lxh_order group by number having count(1)>=2  
    

    4.附近的人

     /**
         * 根据经纬度和半径计算出范围
         * @param string $lat 纬度
         * @param String $lng 经度
         * @param float $radius 半径
         * @return Array 范围数组
         */
         function calcScope($lat, $lng, $radius)
        {
            $degree = (24901 * 1609) / 360.0;
            $dpmLat = 1 / $degree;
    
            $radiusLat = $dpmLat * $radius;
            $minLat = $lat - $radiusLat;       // 最小纬度
            $maxLat = $lat + $radiusLat;       // 最大纬度
    
            $mpdLng = $degree * cos($lat * (pi() / 180));
            $dpmLng = 1 / $mpdLng;
            $radiusLng = $dpmLng * $radius;
            $minLng = $lng - $radiusLng;      // 最小经度
            $maxLng = $lng + $radiusLng;      // 最大经度
    
            /** 返回范围数组 */
            $scope = array(
                'minLat' => $minLat,
                'maxLat' => $maxLat,
                'minLng' => $minLng,
                'maxLng' => $maxLng
            );
            return $scope;
        }
    
     /**
         * 获取两个经纬度之间的距离
         * @param  string $lat1 纬一
         * @param  String $lng1 经一
         * @param  String $lat2 纬二
         * @param  String $lng2 经二
         * @return float  返回两点之间的距离
         */
        private function calcDistance($lng1, $lat1, $lng2, $lat2)
        {
            /** 转换数据类型为 double */
            $lat1 = doubleval($lat1);
            $lng1 = doubleval($lng1);
            $lat2 = doubleval($lat2);
            $lng2 = doubleval($lng2);
            /** 以下算法是 Google 出来的,与大多数经纬度计算工具结果一致 */
            $theta = $lng1 - $lng2;
            $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
            $dist = acos($dist);
            $dist = rad2deg($dist);
            $miles = $dist * 60 * 1.1515;
    //        return ($miles * 1.609344);
            $distance = $miles * 1.609344;
            if ($distance < 1) {
                $distance = round($distance * 1000) . 'm';
            } else {
                $distance = round($distance, 1) . 'km';
            }
            return $distance;
        }
    例:
    $scope = calcScope($lat, $lng, $radius);     // 调用范围计算函数,获取最大最小经纬度
            //附近的优惠卡
            $coupon_list = DB::table('coupon as c')
                ->leftJoin('coupon_item_business as cib', 'cib.coupon_id', '=', 'c.id')
                ->leftJoin('business as b', 'b.id', '=', 'cib.business_id')
                ->where('b.lat', '<', $scope['maxLat'])
                ->where('b.lat', '>', $scope['minLat'])
                ->where('b.lng', '<', $scope['maxLng'])
                ->where('b.lng', '>', $scope['minLng'])
                ->where('b.state', 0)
                ->where('c.state', 0)
                ->where('c.type', 0)
                ->distinct('c.id')
                ->select('c.id', 'c.name', 'c.price', 'c.original_price', 'c.start_time', 'c.end_time', 'c.item_count as item')
                ->get();

    相关文章

      网友评论

          本文标题:mysql常用语句及问题处理

          本文链接:https://www.haomeiwen.com/subject/ajxovxtx.html