有一个表“tbl”,其特定范围内的唯一值“val”(例如,从100到999)。
需要选择保证值,该保证值在表中尚不存在的情况下,如果没有附加表的帮助,所有现有值都超过左关联。
例如。
辅助表填充(整个范围),值为1到9。
基本表格结构:
CREATE TABLE `ranger` (
`val` int(2) unsigned NOT NULL,
UNIQUE KEY `val` (`val`)
) ENGINE=MyISAM;
INSERT INTO `ranger` (`val`) VALUES (1), (2), (4), (5), (6), (7), (8);
从ranger
选择不存在的值:
SELECT
val
FROM
ranger_helper
WHERE
val NOT IN(SELECT val FROM ranger)
ORDER BY
RAND()
LIMIT
1
答案 0 :(得分:0)
SELECT id FROM myTable WHERE id NOT IN (100,101,102,103...,999);
如果您可以轻松地从外部推导出范围,可以起作用
另一种方法可能是创建一个存储过程,并使用WHILE
循环或查询为表中的每个值派生范围。
答案 1 :(得分:0)
MySQL中没有数字生成器。看到这个问题和答案:
How do I make a row generator in MySQL?
在最好的情况下,您可以使用反连接从该范围派生它:
select id from foo where id not in (...);