(SELE-6ren">
gpt4 book ai didi

mysql - 根据sql计数运行SQL语句

转载 作者:行者123 更新时间:2023-11-29 11:12:48 24 4
gpt4 key购买 nike

我想基于第一个 COUNT 个 SQL 查询运行一个 SQL 查询:

SET @result = "SELECT count(*) FROM ip_addresses WHERE id > (SELECT id FROM ip_addresses WHERE in_use=1) ORDER BY id LIMIT 1"
CASE WHEN (@result > 0)
THEN SELECT * FROM ip_addresses WHERE id > (SELECT id FROM ip_addresses WHERE in_use=1) ORDER BY id LIMIT 1
ELSE SELECT * FROM ip_addresses WHERE in_use!=1 ORDER BY id LIMIT 1
END

基本上我想做的是,我想获取WHERE in_use=1的下一条记录in_use=0。如果 in_use=1 记录是表的最后一条记录,则应使用 in_use=0 获取表的第一条记录。更多解释:如果ip_addresses表有以下数据

 id|     ip     |in_use
1 | 192.168.1.5|1
2 | 89.58.1.2 |0
3 | 58.98.58.6 |0

现在它应该返回第二条记录。

如果ip_addresses表有以下数据

 id|     ip     |in_use
1 | 192.168.1.5|0
2 | 89.58.1.2 |0
3 | 58.98.58.6 |1

现在它应该返回第一条记录。

最佳答案

您有几个问题。最重要的是控制流逻辑只允许在编程 block 中。

但是,您可以通过单个查询来完成您想要的任务。例如:

(SELECT ia.*, 1 as priority
FROM ip_addresses ia
WHERE id > (SELECT id FROM ip_addresses WHERE in_use = 1)
ORDER BY id
LIMIT 1
)
UNION ALL
(SELECT ia.*, 2 as priority
FROM ip_addresses ia
WHERE in_use <> 1
ORDER BY id
LIMIT 1
)
ORDER BY priority
LIMIT 1

关于mysql - 根据sql计数运行SQL语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40225331/

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