gpt4 book ai didi

mysql - 在mysql的下一条记录中插入最后一条记录字段

转载 作者:行者123 更新时间:2023-11-29 00:18:48 25 4
gpt4 key购买 nike

我在 mysql 中有一个表。它有一些以前的记录。它的字段是 a、b 和 c。有时我会在此表中插入一条记录,例如具有不同值的记录:

$query = "INSERT INTO table(a, b, c) VALUES('1', '0', '2')";

值是字符。表中的最后一条记录似乎是 5、6、4。我的意思是 a=5、b=6 和 c=4,我想插入一条新记录。我的值是 1、0 和 2,但我希望你能帮助我实现此方法:当 b == 0 时,我不想保存它,而是想保存表中的最后一个字段。例如,我插入 1、0、2,它只插入 a=1 和 c=2,但它插入表中的最后一个字段而不是这个 0,它是 6。

像这样:

if(false)
{
$query = "INSERT INTO table(a, b, c) VALUES('1', The Last Value In Table, '2')";
}

我宁愿不读取表的最后一条记录并使用它的值,因为它可以降低我的速度,速度非常重要。最好使用自动执行此操作的 mysql 命令。

最佳答案

因为您需要最后插入的记录的数据,所以您必须从某个地方获取它。首先想到的是:读取表并查找最后插入的记录,这是你不想要的,可能是因为表太大无法快速访问数据。

所以你需要一个查找表,只包含最后插入的值(即一条记录):

create table last_insert_mytable(a varchar, b varchar, c varchar);

用触发器填充:

create trigger trg_mytable_last_insert after insert on mytable
for each row begin
delete from last_insert_mytable;
insert into last_insert_mytable (a, b, c) values (new.a, new.b, new.c);
end;

因此您的插入语句如下所示:

insert into mytable(a, b, c) 
values ('1', (select b from last_insert_mytable), '2');

或者(前提是last_insert_mytable中已经有记录):

insert into mytable(a, b, c) 
select '1', b, '2' from last_insert_mytable;

请记住,每次插入都会因触发器而变慢。因为只有一个记录需要处理,所以比在 mytable 中查找最后插入的记录要快。这取决于 mytable 的大小。每次插入 mytable 都会发生这种情况。如果很少需要查找最新记录,那么时不时地进行一次缓慢的查找可能比每次都进行稍微慢一点的插入要好。好吧,试试吧。

关于mysql - 在mysql的下一条记录中插入最后一条记录字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21847916/

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