我正在尝试在 MySQL 中创建一个序列(我对 SQL 整体上非常陌生)。我正在使用以下代码,但它导致错误:CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;ORDID 指的是...
我正在尝试在 MySQL 中创建一个序列(我对 SQL 整体来说非常陌生)。我正在使用以下代码,但它会导致错误:
CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;
ORDID 指的是我正在使用的表中的一个字段。如何正确创建序列?
编辑:
据称,MySQL 不使用序列。我现在正在使用以下代码,但这也会导致错误。我该如何修复它们?
CREATE TABLE ORD (
ORDID NUMERIC(4) NOT NULL AUTO_INCREMENT START WITH 622,
//Rest of table code
编辑:
我想我找到了解决办法。对于 phpMyAdmin(我正在使用),您可以使用以下代码。
ALTER TABLE ORD AUTO_INCREMENT = 622;
我不知道它为什么喜欢这样,但如果其他人需要帮助,那么你可以去这里。:)
感谢 James Hopbourn 的回答,这里有一些使用该想法的方法。
这可能是生成具有固定索引(以固定值开始和结束)的测试数据的一个很好的起点。
为了至少以某种方式提供一个完整的示例,我只添加了随机的 X 和 Y 值:
-- CREATE TABLE RawData AS
SELECT
Val AS ID,
floor(RAND() * 1000) AS X,
floor(RAND() * 1000) AS Y
FROM
(
WITH RECURSIVE seq AS
(
SELECT
1000 AS v
UNION ALL
SELECT
v + 1
FROM
seq
WHERE v < 1030
)
SELECT v as Val FROM seq
) AS ValsFrom1000to1030;
它将生成如下测试数据:
+------+------+------+
| ID | X | Y |
+------+------+------+
| 1000 | 157 | 640 |
...
| 1030 | 718 | 902 |
+------+------+------+
解释:
p5
p6
p7
p8
请查看 MySql/MariaDB CREATE TABLE ... AS
文档以了解详细的列定义,例如键、生成的索引和类型。
已在 MariaDB 11.3.2 上测试