---现在我想插入一个phone如果表中存在相同的数字,则只需增加phone_count否则,在表中添加新行。所以我用stored procedure写在上面BEGIN IF ('phone'='10083121224') THEN UPDATE bad_numbers_final SET phone_count= phone_count+10 WHERE 'phone'='10083121224' ; ELSE INSERT INTO bad_numbers_final (phone,phone_count) VALUES ('10083121224',10);END IF;END但是当我执行这个过程时,它总是在表中插入一个新行来代替增加phone_count因为phone我插入的值已经在表中了,所以它只需要增加phone_count` 但它没有这样做。请给我一些建议。提前谢谢。
我对自己的问题有了一个答案,也就是说,我对自己的生活做了一些改变 if 条件,即。 BEGIN IF (select phone from bad_numbers_final WHERE phone='10083121224') THEN UPDATE bad_numbers_final SET phone_count= phone_count+10 WHERE phone='10083121224'; ELSE INSERT INTO bad_numbers_final (phone,phone_count) VALUES ('10083121224',10); END IF; END 问题是我的 if 条件不起作用,因为它不是从哪里来的领域 phone 马上就要插入一个了 sub query 内部 if 条件和这里它是工作良好,感谢您的所有建议。
8条答案
按热度按时间lndjwyie1#
---------+
db2dz4w82#
---------+
vuktfyat3#
--- | Table | Create Table +
bvk5enib4#
---------+
3pmvbmvn5#
---
现在我想插入一个
phone如果表中存在相同的数字,则只需增加
phone_count否则,在表中添加新行。所以我用
stored procedure写在上面
BEGIN IF ('phone'='10083121224') THEN UPDATE bad_numbers_final SET phone_count= phone_count+10 WHERE 'phone'='10083121224' ; ELSE INSERT INTO bad_numbers_final (phone,phone_count) VALUES ('10083121224',10);END IF;END但是当我执行这个过程时,它总是在表中插入一个新行来代替增加
phone_count因为
phone我插入的值已经在表中了,所以它只需要增加
phone_count` 但它没有这样做。请给我一些建议。提前谢谢。tpgth1q76#
--- | bad_numbers_final | CREATE TABLE bad_numbers_final ( id int(11) NOT NULL AUTO_INCREMENT, phone varchar(255) NOT NULL, phone_count varchar(255) DEFAULT NULL, PRIMARY KEY (id,phone) ) ENGINE=InnoDB AUTO_INCREMENT=126956 DEFAULT CHARSET=latin1 | +
dm7nw8vv7#
在
'phone'='10083121224'
您正在比较两个不同的字符串。您应该比较phone='10083121224'。也,
phone_count
是一个varchar(255)
. 不,它应该是一个数字(int或其他什么),它没有意义varchar
。您可以通过这种方式将“10”连接为一个字符串。所以如果你之前有“0”,之后有“010”,然后是“01010”,依此类推。然后你可以这样做:
这里不是“10083121224”,我猜您需要为过程放置一个参数。也可能你想改变电话号码的数据类型以及
wsxa1bj18#
我对自己的问题有了一个答案,也就是说,我对自己的生活做了一些改变
if
条件,即。BEGIN IF (select phone from bad_numbers_final WHERE phone='10083121224') THEN UPDATE bad_numbers_final SET phone_count= phone_count+10 WHERE phone='10083121224'; ELSE INSERT INTO bad_numbers_final (phone,phone_count) VALUES ('10083121224',10); END IF; END
问题是我的if
条件不起作用,因为它不是从哪里来的领域phone
马上就要插入一个了sub query
内部if
条件和这里它是工作良好,感谢您的所有建议。