获取前面的查询
问题描述:
的价值我有一个包括许多查询获取前面的查询
DELIMITER $$
CREATE PROCEDURE test()
BEGIN
SELECT * FROM a;
INSERT INTO b ...; //use result a query
UPDATE c ...; //use result a query
INSERT INTO d ...; //use result a query
SELECT * FROM d WHERE ...; //use result a query
INSERT INTO e ...; //use result d query
UPDATE a ...; //use result d query
END
$$
我怎样才能从以前的查询值的过程?
and
如何检测它是否为空?
答
如果您一次插入一行,并且想要最近一次自动递增的ID,则可以使用ID;
select last_insert_id()
这记录在here。
如果他们插入多行,那么这可能有点棘手。
如果您想从select
“返回”一个值,请使用变量。 。 。 :=
或into
。
答
我建议你使用“临时表”。您可以创建临时表来存储数据并根据该会话执行对其的查询。
因此,它可能是这样的..
DELIMITER $$ CREATE PROCEDURE test() BEGIN CREATE TEMPORARY TABLE IF NOT EXISTS tempTable_A AS (SELECT * FROM a) INSERT INTO b ...; //use result tempTable_A query UPDATE c ...; //use result tempTable_A query INSERT INTO d ...; //use result tempTable_A query CREATE TEMPORARY TABLE IF NOT EXISTS tempTable_D AS (SELECT * FROM d) //use result tempTable_A query INSERT INTO e ...; //use result tempTable_D query UPDATE a ...; //use result tempTable_D query END $$
的例子可以在这里找到: Create a temporary table in a SELECT statement without a separate CREATE TABLE
文档链接: https://dev.mysql.com/doc/refman/5.7/en/create-table.html
我的第一个查询选择。然后,通过获取last_insert_id(),可以采取另一个用户。我不只是想要一个身份证 –
你能给我一个小例子吗? –