mysql 查询记录并插入另一张表

 从 bd_house 查询 houseId, houseName,   插入 bd_house_customer

DROP PROCEDURE IF EXISTS insert_extra_column_test;
DELIMITER //
CREATE PROCEDURE insert_extra_column_test()
BEGIN
    -- 声明变量
	DECLARE newId LONG;
	DECLARE houseId LONG;
	DECLARE houseName VARCHAR ( 50 );
	DECLARE num integer;
    -- 声明接收结果的游标
	DECLARE
		house CURSOR FOR 
    -- 查询记录
        SELECT
		    id houseId,
	        NAME houseName
	    FROM bd_house 
	    WHERE
		id NOT IN ( SELECT house_id FROM bd_house_customer WHERE customer_id = 1111) 
	    ORDER BY  id;

    -- 打开游标
	OPEN house;
    -- 匹配第一个游标, 给变量赋值
	FETCH house INTO houseId, houseName;

    -- 这是固定遍历 100 次, 遍历全部可以用 while ( house is not null ) 判断
	SET num = 100;
	WHILE ( num > 0 ) DO
			INSERT INTO `bd_house_customer` (
				`id`,
				`tenant_id`,
				`house_id`,
				`house`,
				`customer_id`,
				`customer`,
				`change_cause`,
				`relation_state`,
				`remarks`,
				`lease_type`,
				`belong_house_name`,
				`sign_date`,
				`lease_source`,
				`asset_use_type` 
			)
			VALUES
				(
					houseId,
					1111,
					houseId,
					houseName,
					1111,
					'张三',
					'2222',
					'currentTenant',
					1,
					'NewRent',
					houseName,
					NULL,
					'PC_terminal',
					'zzzz' 
				);
		SET num = num - 1;
        -- 匹配下一个游标并赋值
		FETCH house INTO houseId, houseName;
	-- 结束循环, 关闭游标	
	END WHILE;
	CLOSE house;

END //  
DELIMITER ; 

CALL insert_extra_column_test();

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值