sql - 如何使这个 SQL 查询更短?

标签 sql sql-update

如何缩短这个 SQL 查询?

UPDATE users SET password = 'password1' WHERE username = 'user1';
UPDATE users SET password = 'password2' WHERE username = 'user2';
UPDATE users SET password = 'password3' WHERE username = 'user3';

我是 SQL 的新手,所以我需要你的帮助:)

最佳答案

您可以在此处使用 CASE 表达式以及一次更新:

UPDATE users
SET password = CASE username WHEN 'user1' THEN 'password1'
                             WHEN 'user2' THEN 'password2'
                             WHEN 'user3' THEN 'password3' END
WHERE username IN ('user11', 'user2', 'user3');

话虽这么说,但您的操作存在一个更大的问题,即您似乎在用户表中存储了明文密码。不要这样做;相反,不可逆地散列明文密码,然后将此散列存储在表中。这样一来,如果有恶意的人控制了您的 table ,他们将无法计算出实际密码。

关于sql - 如何使这个 SQL 查询更短?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59528687/

相关文章:

asp.net - 图像保存到数据库时获取图像的高度和宽度

c# - 如何在 SQLite 中有条件地插入或替换一行?

mysql - 更新mysql select语句

PHP/MySQL : Combine UPDATE queries?

SQL 查找丢失的日期范围

sql - 检查两个日期是否包含给定月份

sql - 检索一组所有第 N 个 child

mysql - 按时间顺序对连接中的数据进行排序以获得最新条目

MySQL UPDATE QUERY 重复错误

sql - 如何在 UPDATE 查询中的 SELECT 之前的 FROM 之后使用 CASE 语句