Mysqlマルチテーブル操作(削除・変更)

4915 ワード

mysqlは、あるフィールドに挿入されないsqlがすでに存在する場合、あるテーブルのデータを別のテーブルに更新します.
update   1    1  
left join ( select   12  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がすでに存在する場合、あるテーブルのデータを別のテーブルに挿入します.
注意:
-1つのテーブルのクエリー結果を別のテーブルに挿入する方法(2つのテーブルの構造が異なる)、挿入されたフィールドの数とクエリーのフィールドの数が一致する必要があります.クエリー・テーブル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は、1つのテーブルのデータを別のテーブルに挿入し、フィールドに挿入されない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
)