【问题标题】:Knex NodeJS How to select rows with max date for each oneKnex NodeJS如何为每个选择具有最大日期的行
【发布时间】:2019-12-16 15:30:23
【问题描述】:

我正在使用 NodeJS 中的 knex。我的问题是,当每个行都有最大日期时,我完全不知道如何选择所有行。

我使用该代码:

 .from('liczniki')
      .join('klienci', 'liczniki.klienci_idcustomers', '=', 'klienci.idcustomers')
      .join('odczyty', 'odczyty.liczniki_idliczniki', '=','liczniki.idliczniki' )
      .select('liczniki.numer_licznika', 'odczyty.wartosc')
      .where('klienci.idcustomers', '=', idkl)


      .then((result) => {
        if (!result)  { 
          console.log(result);
          var er = 500;
          return er;
        }
        var pass = result;
        console.log(pass)
        return pass;
      })

};

我有结果:

     TextRow { numer_licznika: '1234567', wartosc: 10124 },
      TextRow { numer_licznika: '1234567', wartosc: 320820 },
      TextRow { numer_licznika: '1234567', wartosc: 350430 },
      TextRow { numer_licznika: '1234567', wartosc: 302202 },
      TextRow { numer_licznika: '1212121', wartosc: 220004 },
      TextRow { numer_licznika: '1212121', wartosc: 200202 },
      TextRow { numer_licznika: '1212121', wartosc: 9005090 },
      TextRow { numer_licznika: '1212121', wartosc: 33020 } ]

当日期最晚时,我必须只选择它们。我想要这个样子:

  TextRow { numer_licznika: '1234567', wartosc: 10124 },  
  TextRow { numer_licznika: '1212121', wartosc: 33020 } 

【问题讨论】:

    标签: mysql node.js knex.js


    【解决方案1】:

    您需要过滤要加入的行。我会将其编写为子查询。像这样的:

     .from('liczniki')
          .join('klienci', 'liczniki.klienci_idcustomers', '=', 'klienci.idcustomers')
          .select(
             'liczniki.numer_licznika', 
              knex('odczyty')
                .where('liczniki_idliczniki', knex.ref('liczniki.idliczniki'))
                .select(knex.raw('max(??)', ['wartosc']))
                .as('wartosc')
          )
          .where('klienci.idcustomers', '=', idkl)
    
    

    https://runkit.com/embed/q4dgylmnp69e

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-26
      • 2019-01-23
      • 2016-12-22
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 2022-01-18
      • 2022-01-25
      相关资源
      最近更新 更多