gpt4 book ai didi

mysql - 如果最后一行的值正确则运行查询

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

我想仅在最后一行中的值正确时才运行查询。在我的示例中,如果 ColumnA 中的值在最后一行为 1,那么我想运行 MyQuery。但是,如果该值不是 1,则停在那里什么也不做。

我已经尝试使用 case 和 count(*) 以及 If exists。但我不断出错

SELECT CASE WHEN ((SELECT COUNT(*) FROM
(Select a.* from table as a order by a.index desc limit 1) as b
where b.ColumnA = 1)) > 0 )
THEN (MyQuery)
END

我也尝试过 if exists 但它也不起作用

if exists Select b.* from (Select a.* from table as a order by a.index desc limit 1) where b.ColumnA = 1
begin
(MyQuery)
end

你能指出这些查询中的错误吗,或者也许有更好的方法来实现它。

编辑。该查询将在每次插入该表后在触发器上运行,目的是避免在不需要它的行上运行 MyQuery。 MyQuery 有点慢,大多数行不需要它运行。

最佳答案

我想我们可以在这里改写你的逻辑,让它按你想要的方式工作:

WITH cte AS (
SELECT ColumnA, ROW_NUMBER() OVER (ORDER BY index DESC) rn
FROM yourTable
)

(your query here)
WHERE (SELECT ColumnA FROM cte WHERE rn = 1) = 1;

上面的 WHERE 子句将返回 true 或 false,并将应用于您查询的潜在结果集中的所有记录。也就是说,如果“最后”记录的 ColumnA 值为 1,那么您将取回整个结果集,否则将为空集。

假设您的 MariaDB 版本既不支持 ROW_NUMBER 也不支持 CTE,那么使用:

(your query here)
WHERE (SELECT ColumnA FROM yourTable ORDER BY index DESC LIMIT 1) = 1;

关于mysql - 如果最后一行的值正确则运行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54221344/

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