如何在Mysql中选择最大主键自动递增?

如何在Mysql中选择最大主键自动递增?,mysql,max,auto-increment,Mysql,Max,Auto Increment,如果我从表中删除max ID(例如9、10、11),则sql将不会从max existing ID开始!它从12开始 是否可以让sql根据现有的max id添加新id 如何获得表中的最大主键自动增量(也包括已删除的主键) 此代码仅查找现有ID,而不查找已删除的ID: select max(id) from table1 如果我从表中删除max ID(例如9、10、11),sql将不会从max existing ID开始!它从12开始 这是正确的。关于这一点,没有什么值得惊讶或感叹的。这就是RD

如果我从表中删除max ID(例如9、10、11),则
sql
将不会从max existing ID开始!它从12开始

  • 是否可以让
    sql
    根据现有的max id添加新id
  • 如何获得表中的最大主键自动增量(也包括已删除的主键)
  • 此代码仅查找现有ID,而不查找已删除的ID:

    select max(id) from table1
    
    如果我从表中删除max ID(例如9、10、11),sql将不会从max existing ID开始!它从12开始

    这是正确的。关于这一点,没有什么值得惊讶或感叹的。这就是RDBMS的工作原理

    1-是否可以让sql根据现有的max id添加新id

    一点也不容易。事实上,这是非常困难的,任何尝试都会与您正在使用的特定RDBMS联系在一起(即,非常不可移植),因此建议您甚至不要尝试。这是因为RDBMS是为高度并发使用而构建的,因此它们必须能够防止不同客户端插入不一致主键值的可能性

    2-如何获取表中的最大主键自动增量


    实际上没有“表中的最大主键自动增量”这样的东西,因为当有人向表中插入行时,它可能会以非常快的速度变化,因此当您从表1中选择最大(id)时,会向您返回一个值,数据库中的实际最大值可能已经不同。

    如果您的
    ID
    是自动递增的,最好不要使用它。你的身份证上会有空白,但这很少是个问题。可以强制它从
    max(id)
    开始编号,但这可能比它的价值更麻烦。如果每次删除某个内容时都删除这些间隙,则您不再具有唯一的id。e、 g.由ID 11表示的对象不再是以前由ID 11表示的对象。但大多数软件(也可以说是大多数人)都会认为是这样。从语义上讲,对于您的数据来说,这样做是个坏主意。您的软件也不需要这样工作。好吧,我可以这样做,但我希望得到realy max(id),因为行中的数据名应该具有像12.jpg这样的id_名称。您喜欢的和您需要的并不总是相同的。正如霍尼獾所说,让这一切发生的麻烦是不值得的,试着控制强迫症,让它发生吧。我只想知道下一个MAX(id),仅此而已。我的意思是我帖子的第二个问题你真正想要的是当你插入一行时发出的id。不要再把它当作“max id”之类的东西了。它只是新插入的行接收到的id。为了回答这个问题,您必须准确地告诉我们您访问数据库的方式。是JDBC吗?是ODBC吗?也许是一个ORM?请告诉我。