SQL 更新

await db.update(users)
  .set({ name: 'Mr. Dan' })
  .where(eq(users.name, 'Dan'));

你传递给 update 的对象应当包含与数据库架构中列名匹配的键。 对象中的 undefined 值会被忽略:如果要将某一列设为 null,请传入 null。 你也可以将 SQL 作为值传递给更新对象,例如:

await db.update(users)
  .set({ updatedAt: sql`NOW()` })
  .where(eq(users.name, 'Dan'));

限制

使用 .limit() 为查询添加 limit 子句——例如:

await db.update(usersTable).set({ verified: true }).limit(2);
update `users` set `verified` = ? limit ?;

排序

使用 .orderBy() 为查询添加 order by 子句,按指定字段对结果进行排序:

import { asc, desc } from 'drizzle-orm';

await db.update(usersTable).set({ verified: true }).orderBy(usersTable.name);
await db.update(usersTable).set({ verified: true }).orderBy(desc(usersTable.name));

// 按多个字段排序
await db.update(usersTable).set({ verified: true }).orderBy(usersTable.name, usersTable.name2);
await db.update(usersTable).set({ verified: true }).orderBy(asc(usersTable.name), desc(usersTable.name2));
update `users` set `verified` = ? order by `name`;
update `users` set `verified` = ? order by `name` desc;

update `users` set `verified` = ? order by `name`, `name2`;
update `users` set `verified` = ? order by `name` asc, `name2` desc;