sql - 连接和新列后查询不起作用的 SQL Server
问题描述
这是我当前的工作查询:
DECLARE @ProductName AS VARCHAR(400)
SET @ProductName = 'water'
SET @ProductName = CONCAT('\"',@ProductName,'\"')
SELECT
*,
distance = GEOGRAPHY::Point(42, -90, 4326).STDistance(GEOGRAPHY::Point(latitude, longitude, 4326)) / 1609.344
FROM
products AS FT_TBL
INNER JOIN
FREETEXTTABLE(products, product_name, @ProductName) AS KEY_TBL ON FT_TBL.id = KEY_TBL.[key]
WHERE
KEY_TBL.RANK >= 10
ORDER BY
KEY_TBL.RANK DESC, distance ASC
我正在尝试在加入distance < 20
之前添加一个检查,但无论我做什么它都不起作用,我收到一个错误
列名“距离”无效
即使我尝试在 where 查询中。
我什至在加入之前如何以有效的方式做到这一点?
解决方案
您需要先使用子查询来实际创建带有distance
列的表,然后再将其包含在 where 子句中。
SELECT * FROM (
SELECT *,
distance = GEOGRAPHY::Point(42, -90, 4326).STDistance(GEOGRAPHY::Point(latitude, longitude, 4326)) / 1609.344
FROM products ) AS FT_TBL
INNER JOIN FREETEXTTABLE(products, product_name, @ProductName) AS KEY_TBL ON FT_TBL.id = KEY_TBL.[key]
WHERE KEY_TBL.RANK >= 10 AND distance < 20 ORDER BY KEY_TBL.RANK DESC ,distance asc
这应该工作得很好。
推荐阅读
- python - 在单独的列中获取 Aspect-Based-Sentiment-Analysis 的输出
- r - AUC 函数中的初始化向量超出范围
- sql - BigQuery:“IN”运算符内列表长度的限制?
- c# - Unity 无法使用开始时生成的对象进行地面检查
- javascript - 为 react、redux 和 API 添加条件
- python - 是否有python方式/指令使函数仅在while循环的第一次迭代中执行?
- html - 从站点地图中的其他页面内容索引主网站页面?
- javascript - 用玩笑测试自调用函数
- r - 如何在 df 列表中将所有 POSIXt 更改为字符
- javascript - 如何根据用户是否登录缓存页面在导航栏中显示不同的信息?