大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说大数据更新速度_sql批量更新多条数据,希望您对编程的造诣更进一步.
表信息:
CREATE TABLE `Users` (
`UserID` int NOT NULL AUTO_INCREMENT,
`UserName` varchar(20) NOT NULL,
`Age` int DEFAULT NULL,
`Sex` tinyint DEFAULT NULL,
`PhoneNumber` varchar(11) NOT NULL,
`Email` varchar(20) NOT NULL,
`IdCard` varchar(18) NOT NULL,
`BrithDay` date DEFAULT NULL,
`Address` tinytext,
`Qq` char(12) DEFAULT NULL,
`Zodiac` char(2) DEFAULT NULL,
`Education` char(10) DEFAULT NULL,
`Hobby` char(20) DEFAULT NULL,
`Company` char(20) DEFAULT NULL,
`Nation` char(5) DEFAULT NULL,
`Marital` char(2) DEFAULT NULL,
`Plitical` char(5) DEFAULT NULL,
`Active` tinyint DEFAULT “0”,
PRIMARY KEY (`UserID`)
) ENGINE=InnoDB AUTO_INCREMENT=1010101 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
要做的:把UserID中包含数字2的数据中Active值改为1.
首先创建一个临时表,把需要更改的数据插入到表中
CREATE TEMPORARY TABLE TmpUsers AS
SELECT
Users.UserID
, Users.Active
FROM Users
WHERE Users.UserName LIKE “%2%”
;
在TmpUsers给UserID添加主键索引
ALTER TABLE TmpUsers ADD PRIMARY KEY IX_1(UserID)
;
按要求更改临时表中的数据
UPDATE TmpUsers
SET
TmpUsers.Active = 1
WHERE TmpUsers.UserID LIKE “%2%”
;
建立临时表TmpUsers和原表Users连接
UPDATE Users
INNER JOIN TmpUsers ON Users.UserID = TmpUsers.UserID
SET Users.Active = TmpUsers.Active
;
通过建立临时表用主键索引来批量更改表信息,安全系数较高,运行速度快。不会影响原表的使用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9818.html