【发布时间】:2017-04-08 11:23:19
【问题描述】:
所以这是我的查询,但我如何限制距离值在 0 到 4 之间的情况?
SELECT title, LEVENSHTEIN(title, 'A MATCHING ') AS distance FROM
jb_jobsWHERE description LIKE "%lorem%" ORDER BY distance DESC
【问题讨论】:
标签: php mysql similarity
所以这是我的查询,但我如何限制距离值在 0 到 4 之间的情况?
SELECT title, LEVENSHTEIN(title, 'A MATCHING ') AS distance FROM
jb_jobsWHERE description LIKE "%lorem%" ORDER BY distance DESC
【问题讨论】:
标签: php mysql similarity
您可以使用having 子句:
SELECT title, LEVENSHTEIN(title, 'A MATCHING ') AS distance
FROM jb_jobs
WHERE description LIKE '%lorem%'
HAVING distance <= 4
ORDER BY distance DESC;
以这种方式使用HAVING 而不使用GROUP BY 是MySQL 扩展。在其他数据库中,您通常会使用子查询或 CTE。但是,子查询会增加额外的开销(因为 MySQL 将它们具体化)并且 MySQL 不支持 CTE。
【讨论】:
HAVING 别名(不是全部)。 MySQL 更进一步,不需要GROUP BY 。
SELECT 中如何定义别名无关紧要。您甚至可以在 HAVING 中使用使用别名的表达式。