我想做一个类似SELECT * WHERE number >= 3
的MySQL选择,但我也希望结果中的值低于3(我不知道是2还是1)。
如何调整查询以使此值也在结果中?
答案 0 :(得分:1)
由于您在number
集合之前的行中无法可靠地知道number >= 3
的值,因此您需要在您拥有的查询和另一个限制之间执行UNION
到第一行< 3
。
-- Main query returns the >= 3 set
(
SELECT
col1,
col2,
col3
FROM yourtable
WHERE number >= 3
)
-- Combined with another limited to one record
-- with a descending sort < 3
UNION (
SELECT
col1,
col2,
col3
FROM yourtable
WHERE number < 3
ORDER BY number DESC
LIMIT 1
)
-- If you need a global order on these, apply it here outside the UNION
ORDER BY number ASC
请注意,我上面使用了SELECT col1, col2, col3
。通常不建议在生产代码中使用SELECT *
,但尤其不在UNION
查询中。明确有关返回的订单列非常重要。