繁体   English   中英

如何获取第一个查询的ID并将其用于第三个查询?

[英]How to Get ID of the First Query and Use it to the 3rd Query?

我有一个关于SQL查询的问题。 我的代码中有3个Insert查询。 第一个查询带有自动增量ID。

INSERT INTO master_tbl

第二个插入将使用LAST_INSERT_ID()函数从第一个查询获取ID。

INSERT INTO process (id_ref, process_id, hot_cold, temp) 
VALUES (LAST_INSERT_ID(), '4', '-', '12')

我的问题是,我有第三个查询,它也需要使用在第一个查询中生成的ID作为其id_ref

当我使用LAST_INSERT_ID() ,它获得的ID是第二个查询的ID。

关于如何仍能在第一查询中获得ID以便在第三查询中使用的任何建议?

您可以声明该变量并将第一个查询ID存储在该变量中,然后在任何需要的地方使用它。

 After first query as you mentioned you are using the separate queries you can try using select to set the `Last insert id` into the variable and then use that variable as below,

   select @valuetoUse := LAST_INSERT_ID()

或其他方式是使用选择来获取代码中的值,然后将该值作为所有其他值插入。 为了获得价值,您可以直接select

     SELECT LAST_INSERT_ID()

然后在第二个查询

   INSERT INTO process (id_ref, process_id, hot_cold, temp) 
   VALUES (valuetoUse , '4', '-', '12')

然后在第三个查询中再次

   INSERT INTO thirdtable (id_ref, process_id, hot_cold, temp) 
   VALUES (valuetoUse , '4', '-', '12')

有关如何使用用户定义的变量的更多信息,请参见此处。

功能与@Coder of Code所讲述的相同,但使用PHP

尝试这个

建立连接

$conn = new mysqli($servername, $username, $password, $dbname);

首先插入表1

INSERT INTO master_tbl

然后做

$sql = "SELECT MAX(id) as id from master_tbl";
$result = $conn->query($sql);
$row = $result->fetch_array(MYSQLI_NUM);
$latest_id=$row[0];

$sql = "INSERT INTO process (id_ref, process_id, hot_cold, temp)
 VALUES ($latest_id,'4','-','12')";

if ($conn->query($sql) === TRUE) 
{
    echo "New record created successfully";
}

$sql = "INSERT INTO table3 (id_ref , columns list)
 VALUES ($latest_id,other fields)";

if ($conn->query($sql) === TRUE) 
{
    echo "New record created successfully";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM