如果选择结果未达到限制,MySQL是否可以更改条件语句?
下面的代码将仅选择主要类别,它们的cp.level为0,但是如果它们只有3个类别,如何将cp.level更改为1,直到达到极限
>>> foo(42)
Hello
42
>>> bar(1, 2, c=3)
Hello
9
答案 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 '%с'))