我目前正在尝试从位置表中进行选择。结果应该是最近的位置,另外应该是距离至少 30 公里的位置。
所以我想做一个
SELECT * FROM locations WHERE (distance = minimumdistance OR distance > 30) AND some other parameters LIMIT 2
但是如果没有第二个选择,我就无法获得最小距离,该选择也具有所有其他参数,这将使语句非常长。
MIN(distance) 需要一个分组,但这会导致我只得到一个结果而不是 2...
有什么方法可以更简单地做到这一点吗?在语句中创建没有完整 WHERE 子句两次的语句。
目前是
SELECT * FROM locations WHERE (distance = (SELECT MIN(distance) FROM locations WHERE some other parameters ) OR distance > 30) AND some other parameters LIMIT 2
现在试着想象一下,如果有一些其他参数是一个很长的字符串,而距离是一个计算而不是一个静态表列,这会变得非常讨厌。