根据counter
指令,SELECT
的排序方式与ORDER BY
完全相同,以便counter
在userid
内具有严格的连续值?< / p>
CREATE TEMPORARY TABLE Tmp(
counter BIGINT not null auto_increment,
primary key (counter)
) SELECT userid, itemid
FROM Items WHERE typeid=5 ORDER BY userid;
据我测试,它有效,但在所有情况下都能保证吗?有一些对mysql文档的引用会很好(CREATE TABLE ... SELECT
上的文档没有涵盖那些)。
答案 0 :(得分:0)
我发现的最相关的文档是17.4.1.1 Replication and AUTO_INCREMENT,它似乎保证至少在使用INSERT INTO
时排序:
CREATE TEMPORARY TABLE Tmp(
counter BIGINT not null auto_increment,
userid BIGINT not null,
itemid INT not null,
primary key (counter)
);
INSERT INTO Tmp SELECT userid, itemid
FROM Items WHERE typeid=5 ORDER BY userid;
如果没有人能回答更好的事情,那么会使用该语法。