setp-1 我下面有一个表tblRouteDetails
步骤2 和 我正在尝试从placeName列中的地方之间查找,但是当我输入下面给出的查询时
setp-3 从tblRouteDetails中选择*,其中placeName在“ Kaushambi”和“ Maholi”之间,它给出
setp-4 ,因此它跳过了中间行的记录。但是当我输入时,请从tblRouteDetails中选择*,其中id在1到6之间
它工作正常。但我需要使用placeName
查找地点答案 0 :(得分:3)
下面将是一种方法;但这似乎是一个奇怪的要求。如果有人添加的经纬度介于Kaushambi和Maholi之间,则其ID可能更高,但实际上在两者之间。我认为您要考虑的是经/纬度,并寻找距该线+/- x公里之间的任何距离;两者之间。像这样的问题:Algorithm to find all Latitude Longitude locations within a certain distance from a given Lat Lng location
SELECT *
FROM tblRouteDetails
WHERE ID Between (SELECT ID
FROM tblRouteDetails
WHERE placeName = 'Kaushambi')
AND (SELECT ID
FROM tblRouteDetails
WHERE placeName = 'Maholi')
ORDER BY ID
答案 1 :(得分:1)
您似乎想要:
select rd.*
from tblRouteDetails rd
where rd.id >= (select rd2.id
from tblRouteDetails rd2
where placeName = 'Kaushambi'
) and
rd.id <= (select rd2.id
from tblRouteDetails rd2
where placeName = 'Maholi'
);
换句话说,您希望行在两个值之间。这不是between
所做的。之间是三个操作数的简单比较。
答案 2 :(得分:0)
BETWEEN
运算符将根据列placeName
的字母顺序从'Kaushambi'和'Maholi'中提取所有结果。我相信您认为您的表是静态的,并且希望它根据初始查询中它们在屏幕上出现的顺序检索结果。那是不对的。
表行存储为无序数据集,并且除非您使用ORDER BY
子句,否则将按优化器找到行的顺序返回行。
您可以按placeName
来检索行,但是如果这是您要考虑的唯一列,则顺序将是字母顺序。
例如,尝试BETWEEN 'Bareilly' AND 'Hapur'
来查看结果集的上半部分(再次按字母顺序),即使按ID排序也没有行。