use*_*951 6 mysql mysql-5.5 spatial
看看这个查询
SELECT DISTINCT
TB.ID,
TB.Latitude,
TB.Longitude,
111151.29341326*SQRT(pow(-6.185-TB.Latitude,2)+pow(106.773-TB.Longitude,2)*0.98839228980165) AS Distance
FROM
`tablebusiness` AS TB
join tableauxiliary as TA on TA.BusinessID=TB.ID
WHERE
MBRContains(
GeomFromText ('MULTIPOINT(-6.2317830813328 106.72621691867,-6.1382169186672 106.81978308133)'),
TA.Latlong
)
AND
MATCH (FullTextSearch) AGAINST ('kucing*' IN BOOLEAN MODE)
ORDER BY
Distance
LIMIT
0, 20
Run Code Online (Sandbox Code Playgroud)
这基本上是搜索 TA.LatLong 在 'MULTIPOINT(-6.2317830813328 106.72621691867,-6.1382169186672 106.81978308133)' 框中的所有 biz,并且在该框之后必须包含 ku
这将返回 22 行。
现在将其与此查询进行比较
SELECT DISTINCT
TB.ID,
TB.Latitude,
TB.Longitude,
111151.29341326*SQRT(pow(-6.185-TB.Latitude,2)+pow(106.773-TB.Longitude,2)*0.98839228980165) AS Distance
FROM
`tablebusiness` AS TB
join tableauxiliary as TA on TA.BusinessID=TB.ID
WHERE
MBRContains(
GeomFromText ('MULTIPOINT(-6.2317830813328 106.72621691867,-6.1382169186672 106.81978308133)'),
TA.Latlong
)
ORDER BY
Distance
LIMIT
0, 20
Run Code Online (Sandbox Code Playgroud)
这是相同的查询,但限制较少。现在我只想检查业务是否在框中。这就对了。是的,那些盒子里有企业。其中大部分不包含“kucing*”一词
应该有更多的查询。然而还是少了。第二个查询返回 null。LESS 限制性查询返回 LESS 结果。
罗兰多的回答是一球好。
带有 MATCH (FullTextSearch) AGAINST ('kucing*' IN BOOLEAN MODE) 的那个是可以正常工作的那个。
我在问为什么没有的那个有问题。Rolando 似乎试图纠正正确的错误。
注意:(我想知道这是否应该是另一个问题)。听了别人的后,我尝试了:删除不同的
SELECT
TB.ID,
111151.29341326*SQRT(pow(-6.185-TB.Latitude,2)+pow(106.773-TB.Longitude,2)*0.98839228980165) AS Distance
FROM
`tablebusiness` AS TB
join tableauxiliary as TA on TA.BusinessID=TB.ID
WHERE
MBRContains(
GeomFromText (
'MULTIPOINT(-6.1939967464102 106.76400325359,-6.1760032535898 106.78199674641)'
),
TA.Latlong)
AND TA.Prominent >15
ORDER BY
Distance
LIMIT
0, 20
Run Code Online (Sandbox Code Playgroud)
返回 0 行
然后我尝试删除订单并限制
SELECT
TB.ID,
111151.29341326*SQRT(pow(-6.185-TB.Latitude,2)+pow(106.773-TB.Longitude,2)*0.98839228980165) AS Distance
FROM
`tablebusiness` AS TB
join tableauxiliary as TA on TA.BusinessID=TB.ID
WHERE
MBRContains(
GeomFromText (
'MULTIPOINT(-6.1939967464102 106.76400325359,-6.1760032535898 106.78199674641)'
),
TA.Latlong)
AND TA.Prominent >15
Run Code Online (Sandbox Code Playgroud)
这也最终导致 0 行我使用原始查询并确保我只删除
AND
MATCH (FullTextSearch) AGAINST ('kucing*' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)
将结果从某些结果变为无结果
最后我让查询变得非常简单
SELECT BusinessID, Prominent
FROM
tableauxiliary as TA
WHERE
MBRContains(GeomFromText ('MULTIPOINT(-6.2209869856406 106.73701301436,-6.1490130143594 106.80898698564)'),TA.Latlong)
Run Code Online (Sandbox Code Playgroud)
这是有史以来最基本的查询。
仍然返回无结果
现在这是一个奇迹。我添加了 2 个字符,它再次起作用。我添加的字符是 =1
SELECT BusinessID
FROM tableauxiliary AS TA
WHERE MBRContains( GeomFromText( 'MULTIPOINT(-6.2209869856406 106.73701301436,-6.1490130143594 106.80898698564)' ) , TA.Latlong )
=1
Run Code Online (Sandbox Code Playgroud)
我得到了结果
我想是时候报告错误了。
如果第二个(实际上限制较少)查询返回零行,而第一个查询返回多于零行,那么这是一个错误。
首先检查是否可以仅使用表重现错误。如果在删除DISTINCT
和/或ORDER BY ... LIMIT
.
然后尝试编写重现错误的语句集(CREATE
表、INSERT
行和 2 个查询,尽可能简化),以便其他人可以测试。
然后就可以提交到MySQL了。
归档时间: |
|
查看次数: |
622 次 |
最近记录: |