如何在MySQL查询中表达:“获取所有新元素,但至少有N个元素”。MySql:获取至少N个元素
我会尽力解释更好。如果我有一个产品列表[产品,价格,日期,新],我想知道如何进行查询,并且我想向用户显示所有新元素,但是如果少于N个元素(例如5),则显示最后的项目。如果能想到在这样一个查询:
SELECT * FROM `products` WHERE new='1' ORDER BY date DESC
但这只是返回所有新的元素和这样的:
SELECT * FROM `products` WHERE new='0' ORDER BY date DESC LIMIT 5
刚刚返回所需的最小元素。
一些例子:
- 如果表中包含4个新项目,查询应该返回4个新项目和最新的非新项目
- 如果表中包含7个新项目,查询应该返回只有7个新项目
- 如果表中包含1个新项目,则查询应返回新项目和4个非新项目。
怎样的'new'字段从'date'领域区分?如果您按日期订购并将结果限制为5,那么不会让您获得您想要的结果吗?即使结果中的第五个元素不是“新”,它仍然是最新的非新项目,不是? –
LIMIT查询不可能。限制值必须是常量或变量 - 在查询运行时不能动态填写限制。你需要做一些客户端按摩。 –
@logan:即使有7个新/ 0旧项目显示,它也只会返回5个项目。 –