mysql - 从 mySQL 中检索至少一定数量的记录

标签 mysql sql

告诉 mySQL 获取最少记录数的最佳方法是什么?

假设我有一个产品表,我需要返回至少 5 个项目以适应网站设计。 我可以很容易地写出类似这样的东西:

SELECT * 
FROM products 
WHERE featured = true;

但是,如果这只返回 3 个结果,那么从数据库中返回另外 2 个产品的最佳方法是什么?我当时在想,也许 UNION 加入一个查询以返回几个随机产品。有没有人有任何进一步的建议?

最佳答案

您可以使用 ORDER BY + LIMIT 来实现该效果:

鉴于该数据集:

mysql> SELECT * FROM P;
+--------+----------+
| name   | featured |
+--------+----------+
| Apple  |        1 |
| Pear   |        1 |
| Orange |        1 |
| Lime   |        0 |
| Turnip |        0 |
| Salad  |        0 |
+--------+----------+
6 rows in set (0.00 sec)

如您所见,没有足够的“特色”产品:

mysql> SELECT * FROM P WHERE featured = true LIMIT 5;
+--------+----------+
| name   | featured |
+--------+----------+
| Apple  |        1 |
| Pear   |        1 |
| Orange |        1 |
+--------+----------+
3 rows in set (0.00 se

但是通过订购检索第一个特色产品,然后用非特色产品完成限制,您就拥有了想要的东西:

mysql> SELECT * FROM P ORDER BY featured DESC LIMIT 5;
+--------+----------+
| name   | featured |
+--------+----------+
| Apple  |        1 |
| Pear   |        1 |
| Orange |        1 |
| Lime   |        0 |
| Turnip |        0 |
+--------+----------+
5 rows in set (0.00 sec)

关于mysql - 从 mySQL 中检索至少一定数量的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17318507/

相关文章:

php - 从下拉列表中携带值到数据库

php - 如何从mysql数据库回显最后插入的记录?

sql - 连接到另一台服务器的 TSQL 命令 (SQL Server 2005)

JDBC 连接的 Java 空指针异常

mysql - 将具有多行的项目从 mysql 映射到 solr

python - 如何管理数据库连接,尤其是在多线程的情况下

MySQL:在同一个表上有内部查询引用外部列

mysql - 子查询和加入

PHP MySQLi - WHERE "calculated value is smaller than"不工作

多对多关系的 3 个表之间的 SQL 查询