【问题标题】:How to write a simple sql query using Objection.js如何使用 Objection.js 编写简单的 sql 查询
【发布时间】:2022-01-15 08:37:41
【问题描述】:

我需要用 Objection.js 编写这个 mysql 查询,但我不知道如何正确编写它。

这是查询(1276 是 people 表中 id 的示例):

SELECT MAX(c1.price) AS price 
FROM computers c1 
WHERE c1.ownerId = 1276 AND NOT EXISTS (
  SELECT c2.screenSize 
  FROM computers c2 
  WHERE c2.ownerId = 1276 AND c2.screenSize > c1.screenSize
  )

我已经获取了一个人的实例,现在我想做类似的事情:

person.$relatedQuery("computers", db)
  .select(db.max(db.ref("price")))
  .whereNotExists(qb => qb.where(....

任何建议将不胜感激!

【问题讨论】:

标签: mysql node.js knex.js objection.js


【解决方案1】:

因为您正在搜索不存在更大屏幕尺寸的最高价格,所以您基本上是在搜索具有最大屏幕尺寸的计算机的最高价格。

如果正确,您的 SQL 查询可以简化/更改为:

SELECT MAX(c1.price) AS price 
FROM computers c1 
WHERE c1.ownerId = 1276 
  AND c1.screenSize= ( SELECT MAX(c2.screenSize)
                       FROM computers c2 
                       WHERE c2.ownerId = 1276 
                     )

这样,您的子查询看起来与外部查询几乎相同,这应该会使转换更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多