sql >> Databasteknik >  >> RDS >> Mysql

ändra auto_increment inom samma tabell med hjälp av subquery mysql

Parsern stöder inte en underfråga på den plats du försöker använda den.

Här är utdraget från MySQL-källan, från sql/sql_yacc.yy:

create_table_option:
    . . .
    | AUTO_INC opt_equal ulonglong_num

Det du bör läsa där är att AUTO_INCREMENT tabellalternativet accepterar endast ett enda bokstavligt tal, inte ett uttryck eller en underfråga eller en variabel eller något annat. Så du kan helt enkelt inte ställa in AUTO_INCREMENT i samma programsats som du gör SELECT MAX(id)+1 .

Men du behöver inte.

MySQL kommer aldrig att tilldela ett auto-inkrement-id mindre än det största värdet för närvarande i tabellen. Så om du har en tabell med id-värde 102, kommer nästa värde som allokeras att vara minst 103.

Du kan till och med försöka ställa in AUTO_INCREMENT=50 explicit, men det kommer att ökas automatiskt till MAX(id)+1.



  1. Hur ansluter jag till PostgreSQL utan att ange ett databasnamn?

  2. Gruppera efter värde RAND()

  3. php white screen of death

  4. Välj värden mellan startdatum och slutdatum