gpt4 book ai didi

mysql - 如何在同一查询中选择上面插入的值?

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

我正在创建一个存储过程来生成属性(property)调查。
它首先接收属性 id 输入。
然后,它会在我的调查 表中插入一个新调查,其中包含自动递增的调查 ID 以及相应的属性 id 输入。

最后,该过程执行一系列选择和连接,并检索与属性属性类型关联的所有问题 > 有问题。
这不是相关部分,因为它工作完美且顺利。

在此之前,我的存储过程插入了调查,并显示了一个包含一列 question_description 的表格,行中包含该酒店调查的所有问题。这是代码:

DELIMITER //
CREATE PROCEDURE GenerateSurvey (IN input INT)
BEGIN

INSERT INTO survey (property_id, cas_eval_id, checksum_xxx)
VALUES
(input, 'CAS-XXX-YYYY', 123);

SELECT subquery.question_description
FROM (
SELECT question.question_description,
property_type_question.property_type_id
FROM property_type_question
JOIN question
ON property_type_question.question_id = question.id
ORDER BY question.id
) AS subquery
JOIN property
ON subquery.property_type_id = property.property_type_id
WHERE property.id = input;
END //
DELIMITER ;

问题是,除了显示的问题之外,我现在还想显示所述问题所属的调查的 ID。为此,我正在尝试这样做:

DELIMITER //
CREATE PROCEDURE GenerateSurvey (IN input INT)
BEGIN
INSERT INTO survey (property_id, cas_eval_id, checksum_xxx)
VALUES
(input, 'CAS-XXX-YYYY', 123);

SELECT survey.id AS 'Survey ID',
subquery.question_description
FROM (
SELECT question.question_description,
property_type_question.property_type_id
FROM property_type_question
JOIN question
ON property_type_question.question_id = question.id
ORDER BY question.id
) AS subquery
JOIN property
ON subquery.property_type_id = property.property_type_id
WHERE property.id = input;
END //
DELIMITER ;

这给了我以下错误: enter image description here

所以 MySQL 无法识别 survey.id
survey.id 确实存在。它只是被插入到上面完全相同的查询中,并且它没有出现在代码中,因为它是我的 survey 表的自动递增主键。

那么我如何保持我的程序的能力:

  • 插入调查
  • 显示调查问题

并添加显示调查 ID 和问题的功能?

我正在使用 Uwamp 和 MySQL Workbench 6.2.5。

谢谢!

最佳答案

假设 survey.idAUTO INCREMENT 列,您可以使用 LAST_INSERT_ID()来获取它的值。毫无争议,

LAST_INSERT_ID() returns a BIGINT UNSIGNED (64-bit) value representing the first automatically generated value successfully inserted for an AUTO_INCREMENT column as a result of the most recently executed INSERT statement.

所以你可以改变

SELECT survey.id AS 'Survey ID',

SELECT LAST_INSERT_ID() AS 'Survey ID',

获取survey.id的最后一个值。

关于mysql - 如何在同一查询中选择上面插入的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55554276/

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