gpt4 book ai didi

MySQL 过程返回错误值(INSERT SELECT 面对)

转载 作者:行者123 更新时间:2023-11-30 22:04:20 25 4
gpt4 key购买 nike

我是 MySQL 的新手,一直遇到一些错误,但我总能找到解决方案,除了这个,我不知道如何解决它。

如果变量“ue”为 1 或 0(一堆存在验证),则以下 MySQL 过程返回一个值。验证部分 (SET ue = EXISTS...) 在没有其余代码的情况下工作,应该没有问题。但是当我执行命令 INSERT INTO SELECT 时,它不起作用,它总是返回 0 作为响应,而它应该是 1。这两行相互冲突。

INSERT INTO meetup_participation SELECT user_id, event_id FROM DUAL WHERE ue=1;

SELECT ue AS response;

该过程应将“用户 ID”和“事件 ID”添加到 meetup_participation 中,然后更新与具有该“用户 ID”的用户相对应的“用户”处的行以增加“参与的事件”。它还更新以使用此“事件 ID”增加事件的参与度。

我正在使用 SET ue 来验证诸如用户是否存在、事件是否存在、事件日期是否仍然有效以及用户是否不在该表中之类的事情。因此,我将此值作为 bool 值传递给 INSERT INTO meetup_participation [...] WHERE ue = 1。之后,我执行 SELECT ue 以通知验证返回 true 并且程序执行无问题。

这是完整的过程。

CREATE DEFINER=`user`@`localhost` PROCEDURE `join_event`(IN `user_id` BIGINT(64), IN `event_id` INT) NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER

begin

DECLARE ue INT;
SET ue = EXISTS(SELECT 1 FROM users WHERE fb_uid=user_id) AND EXISTS(SELECT 1 FROM meetup WHERE meet_id=event_id) AND EXISTS(SELECT 1 FROM meetup WHERE date > NOW() AND meet_id = event_id) AND EXISTS(SELECT 1 FROM meetup WHERE meet_id = event_id AND participants <= max_participants) AND NOT EXISTS(SELECT 1 FROM meetup_participation WHERE fb_uid = user_id AND meet_id = event_id);

INSERT INTO meetup_participation SELECT user_id, event_id FROM DUAL WHERE ue=1;

UPDATE users SET events_participated = events_participated + 1 WHERE fb_uid=user_id AND ue=1;
UPDATE meetup SET participants = participants + 1 WHERE meet_id=event_id AND ue=1;
SELECT ue AS response;

end

提前致谢。

最佳答案

INSERT 语句与 SET ue =... 语句分开执行。我不确定您要完成什么,但代码没有任何意义。

如果您想根据应用于用户表中每条记录的 EXISTS 测试将记录添加到 meetup_participation,则需要将测试应用于 SELECT 语句中的每条记录作为 INSERT 的一部分。

如图所示,代码中还存在许多句法/文法问题。

如果您可以解释您试图通过该过程完成的任务,那么可能有人会建议正确的方法来编写该过程。

关于MySQL 过程返回错误值(INSERT SELECT 面对),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241222/

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