【问题标题】:MYSQL LIMIT LEVENSHTEINMYSQL 限制莱文施泰因
【发布时间】:2017-04-08 11:23:19
【问题描述】:

所以这是我的查询,但我如何限制距离值在 0 到 4 之间的情况?

SELECT title, LEVENSHTEIN(title, 'A MATCHING ') AS distance FROM jb_jobs WHERE description LIKE "%lorem%" ORDER BY distance DESC

【问题讨论】:

    标签: php mysql similarity


    【解决方案1】:

    您可以使用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,谢谢!
    • 但是如果我想在两个字段上使用 LEVENSHTEIN,假设我也想添加到描述中.. 我将创建一个别名为 distance_two 我该如何为这两个字段做呢?你可以用一个例子来更新你的答案吗?我可以在几分钟内接受它
    • @Uffo 。 . .是的。一些数据库支持HAVING 别名(不是全部)。 MySQL 更进一步,不需要GROUP BY
    • @Uffo 。 . . SELECT 中如何定义别名无关紧要。您甚至可以在 HAVING 中使用使用别名的表达式。
    • @Uffo 。 . .如果您还有其他问题,请将其作为另一个问题提出,而不是在评论中。
    猜你喜欢
    • 2012-04-30
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2011-12-05
    • 2016-05-07
    相关资源
    最近更新 更多