mysql - 如果选择结果小于 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
解决方案
您可以只过滤查询的结果,所以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 '%с'))
推荐阅读
- bash - Bash:复制根/当前文件夹中具有相同扩展名的所有文件,但文件名包含特定字符串的文件除外
- javascript - Angular Typescript 动态地为类属性赋值
- flutter - 如何返回包含图像的列
- bash - 在服务器上创建 EBS 快照的问题(Linux EC2 实例)
- mongodb - docker-entrypoint-initdb.d 不执行脚本
- javascript - jsPDF autoTable没有在PDF中正确显示原始尺寸的图像
- reactjs - 如何在 React-Navigation V5 中动态显示抽屉项目?
- javascript - 组件与 Vue.js 中的存储数据不匹配
- python - python中使用两个for循环的字谜列表
- typescript - Typescript函数重载:typescript不分析函数代码