【发布时间】:2014-08-22 02:29:17
【问题描述】:
我有一个更大的 SQL 查询,我使用 Boolean Full-Text Searches 来获取 relevance values。
我得到两个相关值:
- 标签 (scoreTags) 乘以 3(重要性更高)
- 一个用于内容(scoreContent)
两者都分配给aliasses。现在我想在同一个 SQL 查询中为新别名(superScore)中的每个匹配项添加它们,但似乎 sql 不能使用别名来计算它。
(scoreTags + scoreContent) AS superScore
我收到以下错误:
mysqlt error: [1054: Unknown column 'scoreTags' in 'field list']
这是我完整的 SQL 语句:
SELECT csia.cID, csia.ak_tags, p.cParentID, cv.cvName,
(MATCH (csia.ak_tags) AGAINST ('Bestäubung Bienen Politik' IN BOOLEAN MODE) * 3) AS scoreTags,
MATCH (psi.content) AGAINST ('Bestäubung Bienen Politik' IN BOOLEAN MODE) AS scoreContent,
(scoreTags + scoreContent) AS superScore
FROM CollectionSearchIndexAttributes csia
LEFT JOIN Pages p
ON csia.cID = p.cID
LEFT JOIN CollectionVersions cv
ON csia.cID = cv.cID
LEFT JOIN PageSearchIndex psi
ON csia.cID = psi.cID
WHERE cv.cvIsApproved = 1
AND (MATCH (csia.ak_tags) AGAINST ('Bestäubung Bienen Politik' IN BOOLEAN MODE))
ORDER BY scoreContent DESC, scoreTags DESC, csia.cID DESC
我也尝试了SUM 功能,但也没有用。你知道如何让它工作吗?谢谢!
我想要的示例:
与 cID 9932 匹配的查询具有 5 的相关性值 (scoreTags) 和 4 (scoreContent) 的相关性值。这个 superScore 应该是 19 ((5 * 3) + 4)。
【问题讨论】:
-
您需要使用子查询或重复
select中的表达式。
标签: mysql sql sum alias relevance