gpt4 book ai didi

mysql在限制小于时添加条件

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:07 25 4
gpt4 key购买 nike

我正在为我的站点创建相关系统。我需要查询,当结果行少于我设置时 - 添加了 1 个条件。

我的例子:

SELECT * FROM `animal` WHERE (`color_id`=1) LIMIT 4

当结果行小于4时,我添加条件

SELECT * FROM `animal` WHERE (`color_id`=1) OR (`breed_id`=1) LIMIT 4

继续

SELECT * FROM `animal` WHERE (`color_id`=1) OR (`breed_id`=1) OR (`type_id`=1) LIMIT 4

如何在 1 个查询中做到这一点?如果可能的话

最佳答案

在结果集太小的情况下重新运行更改的查询不是 MYSQL 的工作,而是执行查询的代码。

一个真正“肮脏”的方法是使用 Union 来确保结果集总是足够大,最后将其限制为 4 行(假设表至少包含 4 个条目):

SELECT * FROM (
SELECT * FROM `animal` WHERE (`color_id`=1) LIMIT 4
UNION
SELECT * FROM `animal` WHERE (`color_id`=1) OR (`breed_id`=1) LIMIT 4
UNION
SELECT * FROM `animal` WHERE (`color_id`=1) OR (`breed_id`=1) OR (`type_id`=1) LIMIT 4
UNION
SELECT * FROM `animal` LIMIT 0,4
) as temp LIMIT 0,4

从技术上讲,这将为每个查询获取 4 行,并且仅在结果集中不包含该行时才将它们添加到结果集中。从最终结果(16 行最坏情况)中获取前 4 行。如果前 3 个查询都没有结果,则返回数据库中存在的前 4 个动物。

关于mysql在限制小于时添加条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42491331/

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