Php 将数据从一个表复制到另一个没有ID的表
我使用MySQL语句将数据从一个表复制到另一个表Php 将数据从一个表复制到另一个没有ID的表,php,mysql,Php,Mysql,我使用MySQL语句将数据从一个表复制到另一个表 $sql2 = "INSERT one SELECT id, user_id, name FROM two WHERE user_id='1'"; 两个表使用相同的列:id、user\u id和name 我想将数据从表two复制到表one。当我执行脚本时,我可以看到表two中的所有数据都被复制到表one。还有列id 我想将表one中的id保留为唯一值。我不想将id从表two复制到one。我只想复制列user\u id和name,并想自动增加表o
$sql2 = "INSERT one SELECT id, user_id, name FROM two WHERE user_id='1'";
两个表使用相同的列:id
、user\u id
和name
我想将数据从表two
复制到表one
。当我执行脚本时,我可以看到表two
中的所有数据都被复制到表one
。还有列id
我想将表one
中的id
保留为唯一值。我不想将id
从表two
复制到one
。我只想复制列user\u id
和name
,并想自动增加表one
中的id
当我在没有id
的情况下执行脚本时,我得到一个错误,即one
和two
中的列不相同
有人知道我如何解决此问题并在没有
id
列的情况下复制数据吗您可以使用以下语法进行查询:
INSERT INTO `one` (`user_id`, `name`) SELECT `user_id`, `name` FROM `two` WHERE `user_id` = 1
与
SELECT
语句中的WHERE
子句匹配的行将复制到表one
由于SELECT
和INSERT
语句中都省略了id
字段,因此创建到one
中的行将根据自动增量值获得id
我假设
user\u id
是一个数字列(类型为int
,bigint
…),因此我删除了值1
周围的单引号
如果字段包含字符串(例如,
char
,varchar
…)类型的列),则应使用引号。'。。。值或插入。。。SELECT,表中每一列的值都必须由值列表或SELECT语句提供。“-insert into one(user\u id,name)选择user\u id,name from two where…
like so?user\u id='1'
如果列数据类型为INT,则也是一般MySQL规则,将其作为INT而不是字符串查询。如果将其作为字符串查询,MySQL的自动广播可能会把事情搞砸,如果anny,优化器可能无法使用索引。并且只有当id为自动增量值时,它才起作用,这是由OPuser\u id='1'
规定的,如果列数据类型为INT,则也是通用的MySQL规则,将其作为INT而不是字符串查询。如果你把它作为字符串查询,MySQL的自动播放会把事情搞砸,如果anny的话,优化器可能无法使用索引。我怀疑这是否真的有效。但我没试过。select语句周围的括号看起来有点奇怪me@RaymondNijland你说得对。但是OP查询将1
置于单引号之间。我们从OP提供的信息中不知道user\u id
列类型。“我们从OP提供的信息中不知道user\u id列类型”这就是为什么我说“如果列数据类型是INT,则将其作为INT而不是字符串查询”@Psi select语句周围的圆括号是可选的,但我发现它们使查询更具可读性。它的工作原理是:看到了吗