命令如下:
select MY_ID+1 from TableName where MY_ID+1 not in(select MY_ID from TableName) and MAP_ID+1<>(select max(MY_ID)+1 from TableName) limit 1
解析下:
select
MY_ID+1 from TableName
where
MY_ID+1 not in(
select MY_ID from TableName
)
and
MAP_ID+1<>(
select max(MY_ID)+1 from TableName
)
limit 1
首先是:
select MY_ID+1 from TableName
他会把所有ID+1然后检索出来!然后是:
ID + 1 not in (select MY_ID from TableName)
这是把ID+1不是在ID的数选出来,随后是:
MAP_ID+1<>(select max(MY_ID)+1 from TableName)
将最大的哪个点去掉,最后是:
limit 1
为了避免表里的ID是断断续续的,只拿最小的,未连续的点。
如果是这样的需求:选出不连续的点,如果点是连续的就在最大的点上+1
sql和上面一样,就减少<>就可以了
select MY_ID+1 from TableName where MY_ID+1 not in(select MY_ID from TableName) limit 1