这里有两个表格-
table1 wp_posts-
ID post_type
1078 soto_user
1079 soto_user
1080 soto_user
table2 usuario
ID post_type
0 soto_user
0 soto_user
0 soto_user我想要table2作为-
ID post_type
1078 soto_user
1079 soto_user
1080 soto_user我尝试过这种语法,但没有效果-
UPDATE usuario
LEFT JOIN wp_posts
ON usuario.post_type=wp_posts.post_type
SET usuario.ID = wp_posts.ID上述查询的正确语法是什么?此处table2中的ID列既不是主键,也不是自动递增字段。
发布于 2015-03-07 15:20:33
在这里,post_type不是用于连接的唯一列。如果进行连接,table1的每一行都将连接到table2的3行,这会导致行膨胀。
如果您正在查找与table1相同的表,则可以使用以下方法:
create table table2
select * from table1;发布于 2015-03-07 15:45:03
使用以下查询。如果您没有使用安全模式来更新(在没有where的情况下更新使用键列的表),则此查询将在下工作
要禁用安全模式,请切换首选项--> SQL编辑器-->查询编辑器中的选项,然后重新连接
UPDATE usuario u
JOIN wp_posts w
ON u.post_type=w.post_type
SET u.id = w.id;UPDATE usuario u
JOIN wp_posts w
ON u.post_type=w.post_type
SET u.id = w.id;
where u.id = 0发布于 2015-03-07 15:19:14
我认为你应该使用游标来更新所有的记录。
DECLARE ID INT,
DECLARE POSTTYPE VARCHAR
DECLARE CURSOR crs_wp_posts FOR SELECT ID,POSTTYPE
OPEN crs_wp_posts
FETCH crs_wp_posts INTO ID, POSTTYPE
UPDATE usuario SET usuario.Id = ID WHERE usuario.Id = (SELECT TOP 1 Id FROM usuario WHERE usuario.Id = 0)
CLOSE crs_wp_postshttps://stackoverflow.com/questions/28912339
复制相似问题