gpt4 book ai didi

php - Mysql 选择 10 条记录(5 条记录和 5 条另一条记录)

转载 作者:行者123 更新时间:2023-11-29 08:23:55 25 4
gpt4 key购买 nike

使用 Mysql 和 PHP...

我有一个广告表,广告可以来自 ad_category“汽车”或“常规”,我需要选择 10 行,但确保我有 5 辆车和 5 条常规记录。

理想情况下,如果它只找到 3 辆汽车,则选择 7 辆常规汽车。

这是通过“SELECT unique”完成的吗?和/或“分组依据”?

最佳答案

您可以使用union all来完成5/5:

(select *
from ads
where ad_category = 'cars'
limit 5
) union all
(select *
from ads
where ad_category = 'general'
limit 5
)

编辑:

如果你在你的情况下确实想要 10 条记录,你可以用这个技巧来做到:

select *
from ((select *, (@cars_rn := @cars_rn + 1) as rn
from ads
where ad_category = 'cars' cross join
(select @cars_rn := 0) const
limit 10
) union all
(select *, (@general_rn = @general_rn + 1) as rn
from ads
where ad_category = 'general' cross join
(select @general_rn := 0) const
limit 10
)
) t
order by rn
limit 10;

这会选择 10 辆汽车和 10 辆将军,并为每辆汽车分配一个连续的行号。然后,它按行号排序并选择前 10 条。这将保证 10 条记录(假设至少 10 条匹配),并且如果可能的话,将得到 5/5 的分割。否则,它将取全部 1 并用其他类别填充 10。

关于php - Mysql 选择 10 条记录(5 条记录和 5 条另一条记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18500796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com