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

在mysql的下一条记录中插入最后一条记录字段,mysql,insert,record,Mysql,Insert,Record,我在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=

我在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')";
}
insert into mytable(a, b, c) 
values ('1', (select b from last_insert_mytable), '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语句如下所示:

if(false)
{
    $query = "INSERT INTO table(a, b, c) VALUES('1', The Last Value In Table, '2')";
}
insert into mytable(a, b, c) 
values ('1', (select b from last_insert_mytable), '2');
或者如果上次插入的表格中已有记录:

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

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

插入表[17]?呵呵?为什么不使用自动递增主键?要获取最后一行,您可以使用_表中的SELECT MAXid,假设id是自动递增主键的列名。对不起。插入到表中。我使用了自动递增,但我宁愿不获取最后一条记录。我需要一些东西自动完成它。可能吗?搜索插入到。。。在MySQL中选择。就像@ShivanRaptor所说的,使用一个ID INT AUTO_INCREMENT字段来跟踪记录$查询=插入到表A、b、c值“1”,从表中选择b,其中ID=从表“2”中选择MAXID;非常感谢希万和迪亚顿。