gpt4 book ai didi

MySQL 满足条件返回查询结果,不重复查询

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

假设我有一些基本的东西

SELECT IF( (1 + 2) >=0, (1 + 2), 0)
FROM DUAL

这显然会返回 3。

有没有办法不重复我想返回的查询(这里是 1 + 2)?

换句话说,我想返回当月剩余任务的数量(至少必须完成 4 个),但是如果已经完成了 4 个以上,就没有必要再做更多了,所以我想返回0。

我所做的是

IF((4 - IFNULL((LONG QUERY RETURNING THE NUMBER OF TASKS DONE THIS MONTH FOR A PARTICULAR USER ),0)) >= 0,
(4 - IFNULL((LONG QUERY RETURNING THE NUMBER OF TASKS DONE THIS MONTH FOR A PARTICULAR USER ),
0)

但有没有办法不重复查询,因为它很长而且我不希望服务器执行两次相同的查询?

最佳答案

根据您的要求,您可能希望使用 user-defined variables :

SELECT 1+2 INTO @tmp;
SELECT IF( @tmp >=0, @tmp, 0)

或者,如果您喜欢one liners

SELECT IF( (@tmp := (1+2)) >=0, @tmp, 0)
-- ^ ^
-- don't forget those parenthesis !

编辑:这也适用于“表选择”语句:

CREATE TABLE tbl AS SELECT 1 as a UNION SELECT 2;
SELECT SUM(a) FROM tbl INTO @tmp;
SELECT IF ( @tmp > 0, @tmp, 0);

如果你看http://sqlfiddle.com/#!2/37c33/1对于上述查询的执行计划,您将看到第二个SELECT 不使用该表。


顺便说一句,请注意,在您的实际示例中,可以这样写:

SELECT MAX( (1+2), 0 )
-- ^^^^^ here your expression

...但我认为这不是您的真实查询的属性?

关于MySQL 满足条件返回查询结果,不重复查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18127804/

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