如果选择结果小于10,如何更改条件

时间:2019-09-02 12:44:44

标签: mysql sql

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

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

>>> foo(42)
Hello
42

>>> bar(1, 2, c=3)
Hello
9

1 个答案:

答案 0 :(得分:1)

您可以只过滤查询结果,以使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 '%с'))