1

私はこのクエリを実行しようとしています:

SELECT  `venues` . * 
FROM  `venues` 
WHERE  `lat` >= 39.847991180331
AND  `lng` >= -86.332592054637
AND  `lat` <= 40.137846252794
AND  `lng` <= -85.954901904578
LIMIT 0 , 30

これは、latフィールドとlngフィールドのテーブル構造とサンプル行であり、少なくとも1行を返す必要があります。

lng decimal(65,15)                              
lat decimal(65,15)

Name                  Lng                   Lat
Ambre Blends Studio   -86.143746979607530   39.875314973898870

ただし、上記のクエリを実行すると、行は返されません。ここでの問題は何ですか?

4

1 に答える 1

0

私は常に浮動小数点の等式と不等式の操作に注意を払っています。MySQLには過去にこの種の問題の履歴があります(使用しているバージョンはわかりませんが、503/505前後にいくつかの変更が加えられました) )。

私が最初にすることは、実際のステートメントをデバッグすることです。皮切りに:

select venues.* from venues
 where name like 'Ambre%'

そして、1行だけを取得するようにします(whereで始まる行がたくさんある場合は、句を微調整する必要があるかもしれませんAmbre)。

次に、行が表示されなくなるまで、他の副次句を一度に1つずつ追加します。最初は次のようになります。

select venues.* from venues
 where name like 'Ambre%'
   and lat >= 39.847991180331

が失敗する原因となっている条件を特定したら、そのselect理由を調べ始めることができます。

于 2013-02-01T01:20:07.313 に答える