如果要创建许多这样的记录(要注册10个用户,而不仅仅是一个用户),会发生什么情况?我找到以下解决方案(仅5个查询):
步骤I:创建临时表以存储新数据。
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
接下来,用值填充该表。
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
在这里,而不是 $ALL_VAL
您放置值列表:('test1','test1','bio1','home1'),...,('testn','testn','bion','homen')
第二步:将数据发送到“用户”表。
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
如果您已经允许某些用户进入,则可以在此处使用“ IGNORE”。可选地,在此步骤之前,您可以使用类似于步骤III的UPDATE来查找已经在其中的用户(并将其标记在tmp表中)。在这里我们支持,用户名声明为PRIMARY
在users表中。
第三步:应用更新以将所有用户ID从用户读取到tmp表。这是必不可少的步骤。
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
步骤IV:创建另一个表,使用用户的读取ID
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp