首页 > 解决方案 > 如果选择结果小于 10,如何更改条件

问题描述

如果选择结果未达到限制,MySQL 是否可以更改条件语句?

下面的代码将仅选择主要类别,它们的 cp.level 为 0 但如果它们只有 3 个类别,我如何将 cp.level 更改为 1 直到达到限制

SELECT DISTINCT
        name, cd.category_id
        FROM oc_category_description cd
        LEFT JOIN oc_category_path cp ON (cd.category_id = cp.path_id)
        WHERE name LIKE 'с%'
        AND cp.level = 0 LIMIT 10

标签: mysqlsql

解决方案


您可以只过滤查询的结果,所以cp.level是 0 或 1,排序cp.level并保持限制为 10。像这样:

SELECT DISTINCT
        name, cd.category_id
        FROM oc_category_description cd
        LEFT JOIN oc_category_path cp ON (cd.category_id = cp.path_id)
        WHERE name LIKE 'с%'
        AND cp.level in (0, 1) ORDER BY cp.level ASC
        LIMIT 10 

但是,如果您不确定它是否会达到 1 级并且也想显示 2 级,则可以将其删除cp.level = 0并按顺序排序ORDER BY cp.level ASC

如果您想根据计数更改您在名称上过滤的值,就像您在评论中提到的那样,那么您可以这样做:

WHERE (((subquery to get count) > 10 AND name LIKE 'с%') OR ((subquery to get count) < 10 AND name LIKE '%с'))

推荐阅读