gpt4 book ai didi

mysql - 在 SELECT (MySQL) 过程中设置

转载 作者:行者123 更新时间:2023-11-29 17:53:34 25 4
gpt4 key购买 nike

我想要得到的是 DiscountVar 内的 user_discount.percent

因此,在 THEN SET 中,我可以返回单个值 discount = DiscountVar

BEGIN
DECLARE DiscountVar FLOAT(28,10);

IF EXISTS
(
SELECT
user_discount.percent as DiscountVar,
user_discount.link_id,
user_discount.pacc_id,
user_discount.timestamp_valid
FROM
user_discount
WHERE
user_discount.link_id = wo_id
AND user_discount.pacc_id = pacc_id
AND UTC_TIMESTAMP>=user_discount.timestamp_valid
ORDER BY
user_discount.timestamp_valid DESC
LIMIT 1
)

THEN SET discount = DiscountVar;

ELSE SET discount = 0;
END IF;

END

这可能吗?

<小时/>

我已经尝试过这个 user_discount.percent AS 百分比 INTO @DiscountVar 但它不起作用......

<小时/>

IF EXISTS 本身有效。我只需要进行第二次选择即可输出 THEN 中的数据。

最佳答案

查询中的别名不等同于过程变量。如果要分配给变量,请使用 SELECT ... INTO .

您还可以使用 := 进行赋值。但我认为你必须使用带有 @ 前缀的用户变量,而不是声明的变量。

当您使用EXISTS执行查询时,它只是测试查询是否与任何行匹配,而不会执行赋值。不要使用 EXISTS,而是执行 SELECT 并检查变量是否已设置。

BEGIN

SELECT
@DiscountVar := user_discount.percent,
user_discount.link_id,
user_discount.pacc_id,
user_discount.timestamp_valid
FROM
user_discount
WHERE
user_discount.link_id = wo_id
AND user_discount.pacc_id = pacc_id
AND UTC_TIMESTAMP>=user_discount.timestamp_valid
ORDER BY
user_discount.timestamp_valid DESC
LIMIT 1;

SET discount = IFNULL(@DiscountVar, 0);

END

关于mysql - 在 SELECT (MySQL) 过程中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49077992/

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