首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制不处理复杂查询

限制不处理复杂查询
EN

Stack Overflow用户
提问于 2014-12-18 14:29:14
回答 1查看 33关注 0票数 0

我创建了一个函数,它生成一个复杂的查询,为我的搜索引擎计算点数。它得到了正确的结果,但我不能限制输出行..。下面是为一个2字搜索("lorem“)生成的查询:

代码语言:javascript
复制
SELECT SQL_CALC_FOUND_ROWS
    `Search`.`model` AS `model`, 
    `Search`.`foreign_key` AS `id`, 
    SUM(`Search`.`points`) AS `points`
FROM (
    SELECT
        `i18n`.`foreign_key`, `i18n`.`model`,
        (CASE 
            WHEN `i18n`.`field` = "name" THEN 50
            WHEN `i18n`.`field` = "s_desc" THEN 20
        END) AS `points`
    FROM
        `i18n`
    WHERE
        `i18n`.`field` IN ("name", "s_desc") AND
        `i18n`.`locale` = "en-us" AND
        (`i18n`.`content` LIKE "lorem%" OR `i18n`.`content` LIKE "% lorem%")

    UNION ALL

    SELECT
        `tagged`.`foreign_key`, `tagged`.`model`, 
        "50" as `points`
    FROM
        `tagged`
    INNER JOIN
        `tags` ON
            `tags`.`id` = `tagged`.`tag_id` AND
            `tags`.`name` = "lorem"
    WHERE
        `tagged`.`language` = "en-us"
     UNION ALL 
    SELECT
        `i18n`.`foreign_key`, `i18n`.`model`,
        (CASE 
            WHEN `i18n`.`field` = "name" THEN 50
            WHEN `i18n`.`field` = "s_desc" THEN 20
        END) AS `points`
    FROM
        `i18n`
    WHERE
        `i18n`.`field` IN ("name", "s_desc") AND
        `i18n`.`locale` = "en-us" AND
        (`i18n`.`content` LIKE "ipsum%" OR `i18n`.`content` LIKE "% ipsum%")

    UNION ALL

    SELECT
        `tagged`.`foreign_key`, `tagged`.`model`, 
        "50" as `points`
    FROM
        `tagged`
    INNER JOIN
        `tags` ON
            `tags`.`id` = `tagged`.`tag_id` AND
            `tags`.`name` = "ipsum"
    WHERE
        `tagged`.`language` = "en-us"
    ) `Search`
GROUP BY
    `Search`.`model`,
    `Search`.`foreign_key`
ORDER BY
    `points` DESC;
LIMIT 5 OFFSET 0

请注意,我还尝试了LIMIT 5, 0,并且只尝试了LIMIT 5。它会返回所有的点击率,而不仅仅是前5。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-19 12:25:04

现在一切都正常了,问题在于ORDER语句中的ORDER

代码语言:javascript
复制
ORDER BY
    `points` DESC
LIMIT 5 OFFSET 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27548848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档