【问题标题】:Loopback findOne where number is highest环回 findOne,其中数字最高
【发布时间】:2019-01-24 17:22:19
【问题描述】:

我正在使用 Loopback 来获取我的数据。我有下表:

id, name, version_number

现在我想找到version_number 最高的名字。

假设我有以下数据:

1, 'hello', 2
2, 'test', 1

我想找到记录1, 'hello', 2

从文档中,我似乎找不到任何符合我需要的东西。那么谁能告诉我我会怎么做?

请注意,我不是在寻找 find 函数,我们通过 version_number 订购我正在寻找 findMax 类型的函数

【问题讨论】:

  • @jarlh postgres

标签: javascript sql postgresql loopback


【解决方案1】:

使用FETCH FIRST 结合ORDER BY 查找最高版本号的行:

select * from tablename
order by version_number desc
fetch first 1 row only

【讨论】:

  • 请注意我正在使用环回
  • 这是否意味着您不想要 SQL 答案?
  • 我正在寻找一个可以做到这一点的环回函数
  • 如果是这样的话,标签有点误导。
【解决方案2】:

尝试以下方法:

SELECT * FROM table t where 
   version_number IN (select max(version_number) from table v)

【讨论】:

    【解决方案3】:

    我会做这样的事情:

    const findMax = (model, field) => {
      return new Promise((resolve, reject) => {
        model.find({
          order: `${field} DESC, id ASC`
        }, (err, rows) => {
          if (err) return reject(err);
          resolve(rows.filter(row => row[field] === rows[0][field]));
        });
      });
    }
    

    作为远程方法、钩子、中间件,任何适合您的需求。

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多