Mysql多表操作(增删改查)

mysql将一个表的数据更新到另外一个表,如果某个字段已经存在将不插入的sql

update 表名1  别名1  
left join ( select 字段1,字段2  from 表名2 ) 别名2 
on 别名.字段=表名1.字段 
set 表名1.字段1= 表名2.字段1,  表名1.字段2= 表名2.字段2

举个栗子:

UPDATE USER t1
LEFT JOIN (
	SELECT
		user_id,
		min(date_time) date_time
	FROM
		ctoc_tb
	GROUP BY
		user_id
) t2 ON t2.user_id = t1.user_id
SET t1.date_time = t2.date_time

mysql将一个表的数据插入到另外一个表,如果某个字段已经存在将不插入的sql

注意:

– 如何把一个表的查询结果插入到另一张表中(两个表的结构不同), 插入的字段个数和查询的字段个数必须一致,查询表2的字段和插入表1的字段必须一致

insert into 表名1(字段1,字段2,字段3...) select 字段1,字段2,字段3.. from 表名2 where ..

举个栗子:

insert into A(id,names) select id,firstName from B;   这样mysql执行是不行的

改进后:

insert into A(id,names) select id,firstName as names   from B;   这样mysql执行是可行的

实例子sql语句
需求: mysql将一个表的数据插入到另外一个表,如果某个字段已经存在将不插入的sql

INSERT INTO city_tb (ip, country, province, city) 
SELECT DISTINCT (remote_ip) ip,
	'' country,
	'' province,
	'' city
FROM
	ctoc_tb
WHERE NOT EXISTS(
SELECT
			ip
		FROM
			city_tb
		WHERE
			city_tb.ip = ctoc_tb.remote_ip
)

你可能感兴趣的:(mysql)