1
我有一个MySQL查询的问题。从MySQL中的子查询抓取查询
我写的SQL查询来获取从tablebusiness ID和时间戳与不同的查询
SELECT `ID`,`TimeStamp`,pow(-6-`Latitude`,2)+pow(106-`Longitude`,2)*cos(-6*0.017453292519943)*cos(`Latitude`*0.017453292519943) as DistanceSquare FROM `tablebusiness` WHERE Title LIKE '%sushi%' AND -6.8996746410157 < `Latitude` AND `Latitude` < -5.1003253589843 AND 105.10032535898 < `Longitude` AND `Longitude` < 106.89967464102 ORDER BY DistanceSquare LIMIT 2 ,20
现在能正常工作在我的情况。
但是我不想在最终结果中提到DistanceSquare以节省带宽。所以我做
SELECT `ID`,`TimeStamp` FROM (SELECT `ID`,`TimeStamp`,pow(-6-`Latitude`,2)+pow(106-`Longitude`,2)*cos(-6*0.017453292519943)*cos(`Latitude`*0.017453292519943) as DistanceSquare FROM `tablebusiness` WHERE Title LIKE '%sushi%' AND -6.8996746410157 < `Latitude` AND `Latitude` < -5.1003253589843 AND 105.10032535898 < `Longitude` AND `Longitude` < 106.89967464102 ORDER BY DistanceSquare LIMIT 2 ,20)
所以基本上我从内SELECT生成的表拿起ID和时间戳。它不起作用。我应该如何格式化它?
我只想从tablebusiness
获得ID和时间戳任何一个可以帮我解决这个问题呢?
不是一个大的,但我只是想学习。
这是PHP代码我用来生成这个查询
$phiper180=pi()/180;
$formula="pow(".$_GET['lat']."-`Latitude`,2)+pow(".$_GET['long']."-`Longitude`,2)*cos(".$_GET['lat']."*".$phiper180.")*cos(`Latitude`*".$phiper180.")";
$query="SELECT `ID`,`TimeStamp`,$formula as DistanceSquare FROM `tablebusiness` WHERE Title LIKE '%".$_GET['keyword']."%' AND ". ($_GET['lat']-$distanceindegrees). " < `Latitude` AND `Latitude` < " . ($_GET['lat']+$distanceindegrees) . " AND " . ($_GET['long']-$distanceindegrees). " < `Longitude` AND `Longitude` < " . ($_GET['long']+$distanceindegrees)." ORDER BY DistanceSquare LIMIT ".($startFrom)." ,20";
$query="SELECT `ID`,`TimeStamp` FROM (".$query.")";
Ah效果不错。工作得很好。其实我一直在想用存储过程来做这件事,但似乎有几种方法可以做到这一点。 –