mysql - 如果条件匹配但有后备,如何获取 mysql 查询

标签 mysql

虽然标题很宽泛,但我的问题很简单。我有一个表,我们称之为“新闻”,里面有文章。通常文章是按order拉取的,但只有在“精选”时才会在首页上显示。但是,如果查询是:

SELECT * FROM {TABLE_PREFIX}news WHERE `status` = '1' AND `featured` = '1' ORDER BY `order` LIMIT 0, 4

那么至少有一些文章必须被推荐。但是,如果只有 2 篇精选文章怎么办?所以我想有一个后备,所以当只有 2 篇精选文章时,它也会得到两篇非精选文章。

我认为,这可以解决问题,但它并没有像我计划的那样工作:

SELECT * FROM {TABLE_PREFIX}news WHERE `status` = '1' AND `featured` = '1' ORDER BY `featured`, `order` LIMIT 0, 4

最佳答案

您的方向是正确的,但您仍然选择了featured = 1。试试这个:

SELECT * FROM {TABLE_PREFIX}news WHERE `status` = '1' ORDER BY `featured` DESC, `order` LIMIT 0, 4

关于mysql - 如果条件匹配但有后备,如何获取 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939028/

相关文章:

php - 如何计算 ACF 中继器输出中的总行数

PHP 从函数返回一个字符串供稍后使用?

mysql - 更新 MYSQL 中另一个表的空字段

mysql - 如何从shell脚本将diff.sql应用到mysql数据库

php - 如何使用 PHP 更有效地将 csv 文件导入 MySQL 数据库?

mysql 查看我的查询输出我需要不同的方式

mysql - Rails - 具有单个源和 database.yml 文件的多个开发实例

php - MySQL 搜索不存在的 URL 并从数据库中删除

mysql - 日期/时间比较操作的排序规则组合非法

java - JSP/Servlet 如果错误停留在同一页面而不是转发