MySQL查询可用值

时间:2014-08-27 19:55:10

标签: mysql

我有桌面测试:

cod double  PRI     
nom varchar(100)
tip varchar(50) 
des varchar(500)
pre double

该表包含一个名为“cod”的数字主键。鳕鱼值从1000到40000.

可以删除行。 F / E:

有鳕鱼:

1001 X X X 1.0
1002 Y Y Y 2.0
1003 Z Z Z 3.0
1004 A A A 4.0
1005 B B B 5.0

如果删除1002,则在1001和1003之间缺少一个数字。

1001 X X X 1.0
1003 Z Z Z 3.0
1004 A A A 4.0
1005 B B B 5.0

我可以进行查询以获取所有这些缺失的数字,以便我可以建议用户可以自由注册新行的鳕鱼值吗?

2 个答案:

答案 0 :(得分:1)

我建议采用不同的方法。如果您有一个限制为39000行的表,则创建该表以包含所有行开头。

然后,有一个IsAvailable标志。您可以只更新标志:

,而不是删除记录
update test t
    set IsAvailable = 1
    where cod = < whatever >;

如果要使用值,请将可用标志设置为1。

然后,您可以使用以下内容获取前10个可用插槽:

select cod
from test
where IsAvailable = 1
limit 10;

顺便说一下,在整个问题中你将cod称为整数,但它被声明为double。我强烈建议你将列设为整数值。

答案 1 :(得分:0)

您可以使用:

SELECt test1.cod - 1 AS missing_cod
FROM test AS test1
LEFT JOIN test test2 ON test2.cod = test1.cod - 1
WHERE test2.cod IS NULL

这应该有用(我想),我不知道如果你有多个遗失的号码将会发生什么

为什么在cod列上使用带整数值的double?