Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
889 views
in Technique[技术] by (71.8m points)

javascript - Knex - Select multiple tables and order

How can I translate this to knex.js?

SELECT id, 
       Sum(x.kills) AS total 
FROM   (SELECT id, 
               kills 
        FROM   bedwars_player_solo 
        UNION ALL 
        SELECT id, 
               kills 
        FROM   bedwars_player_duo 
        UNION ALL 
        SELECT id, 
               kills 
        FROM   bedwars_player_comp_clan) x 
GROUP  BY id 
ORDER  BY total DESC 
LIMIT  10; 

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I believe you could write it as

knex.select('id', knex.raw('SUM(x.kills)'))
.from(function() {
  knex.select('id','kills').from('bedwars_player_solo')
  .unionAll(
    knex.select('id','kills').from('bedwars_player_duo'),
    knex.select('id','kills').from('bedwars_player_comp_clan')
).as('x')
}).groupBy('id')
.orderBy('total', 'desc')

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...