MySQL - 从select查询插入查询的更新字段

时间:2015-10-01 10:13:37

标签: mysql

我有两个表AB

我想将表A中的记录插入到表B中,但在将新记录添加到表orderNum时使用新的B值。

我有以下查询但未按预期工作。

INSERT INTO B (refId, userId, orderNum)
SELECT id, '1', (SELECT count(refId) + 1 FROM B WHERE userId = 1) as orderNum
FROM A 
WHERE is_mendatory IS NOT NULL
ORDER BY is_mendatory ASC

假设我在表B中存在3条记录并使用SELECT查询我将再插入5条记录。因此,应该使用4,5,6,7,8中的orderNum插入那些新的5条记录。

但目前它只为新的5条记录设置为orderNum

有人可以对此提出一些建议吗?

编辑:

我在orderNum字段中获得4个新记录。

1 个答案:

答案 0 :(得分:0)

创建一个before insert触发器,为每个INSERT计算B中的行,将该数字存储在一个变量中,用行数更新该表。

DELIMITER //

CREATE TRIGGER orderNum_after_insert
BEFORE INSERT
   ON B FOR EACH ROW  
BEGIN

SET @orderNo:=(SELECT COUNT(*) FROM B);
SET NEW.orderNum=@orderNo;

END; //

DELIMITER ;