告诉 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/