You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条Prisma语句实现含NOT IN子查询的SQL统计逻辑?

可行,单条Prisma查询即可实现该逻辑

原SQL的核心是统计处于激活状态、且未被ID为2的学生完成的模拟测试数量,对应Prisma的实现如下:

假设你的Prisma Schema模型定义大致如下:

model MockTest {
  id              Int                      @id @default(autoincrement())
  isActive        Boolean
  givenByStudents MockTestsGivenByStudent[] // 关联学生完成记录的关系字段
}

model MockTestsGivenByStudent {
  id           Int      @id @default(autoincrement())
  studentId    Int
  mockTestId   Int
  mockTest     MockTest @relation(fields: [mockTestId], references: [id])
}

对应的单条Prisma查询代码:

const mockTestCount = await prisma.mockTest.count({
  where: {
    isActive: true,
    givenByStudents: {
      none: {
        studentId: 2
      }
    }
  }
})

逻辑说明

  • count() 方法直接对应原SQL的COUNT(*)
  • isActive: true 匹配原SQL的isActive = 1
  • givenByStudents: { none: { studentId: 2 } } 等价于原SQL的id NOT IN (...):Prisma会将这个条件转换为NOT EXISTS子查询,效果和原SQL一致,且在处理空值场景时更稳定。

内容的提问来源于stack exchange,提问作者Debabrata Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:12:36