你可以删除表中的所有行:
await db.delete(users);
你也可以使用过滤器和条件进行删除:
await db.delete(users).where(eq(users.name, 'Dan'));
在 PostgreSQL 和 SQLite 中,你可以删除一行并将其返回:
const deletedUser = await db.delete(users) .where(eq(users.name, 'Dan')) .returning(); // partial return const deletedUserIds: { deletedId: number }[] = await db.delete(users) .where(eq(users.name, 'Dan')) .returning({ deletedId: users.id });
查看如何在 select、insert、update 中使用 WITH 语句
使用 with 子句可以通过将复杂查询拆分为称为公共表达式的较小子查询来简化复杂查询:
with
const averageAmount = db.$with('average_amount').as( db.select({ value: sql`avg(${orders.amount})`.as('value') }).from(orders) ); const result = await db .with(averageAmount) .delete(orders) .where(gt(orders.amount, sql`(select * from ${averageAmount})`)) .returning({ id: orders.id });
with "average_amount" as (select avg("amount") as "value" from "orders") delete from "orders" where "orders"."amount" > (select * from "average_amount") returning "id"