我有一个19行的用户表(第一行是admin)。我需要添加更多,所以我有另一个数据库的表有超过140万用户。
我的表有一个“用户id”作为主键,int(11),没有自动递增。我需要添加从第20行开始的用户,并且只添加“名字”、“姓氏”和“电子邮件”。
我的第一次尝试:
insert into mydatabase.users(first\u name,last\u name,email)选择first\u name,last\u name,email from anotherdatabase.users
这会得到一个“字段'user\u id'没有默认值”。
我理解这是因为user\ id是主键,不能为空。所以,也是int(11),非自动递增。
所以我想加上20,21,22,23等等,还有其他的数据。我花了5个小时找了很多东西´似乎找不到我能理解的东西。
先谢谢你。
3条答案
按热度按时间aurhwmvo1#
我找到了一个更简单的方法,使用变量。我还可以´我不敢相信。它起了很大的作用
vbopmzt12#
编写一个使用变量的过程。对于i<1400020,您需要计算另一个数据库中的行数。然后用户将数字加上20。
4jb9z9bj3#
要获得从20开始的数字:
第19行以上()
'row_number()'=当前行在其分区内的行数(mysql文档)'over()'-定义一个没有条件的分区;所以事实上整个table都很重要
关于这两个方面的详细信息可以在mysql窗口函数概念和语法下找到
19+ - ...
或者-如果mysql版本<8.0:
这并不是假设您在另一个表上也有一个用户id。内部select只计算原始数据库中有多少条记录的id小于在该点返回的记录(并加上20以使编号从20开始)。
以及第三个选项(不取决于用户id的存在):
我不太喜欢这个,因为它需要创建变量来跟踪行号。