简体   繁体   English

将两个MYSQL查询列结果合并为一个,以在ORDER BY中使用

[英]Combine two MYSQL Queries column result into one to use in ORDER BY

I have two queries to get user coins and gems value. 我有两个查询来获取用户硬币和宝石的价值。 i can get each field value as separately but i want them together as addition value.. (coins+gems) values to use in ORDER BY 我可以分别获取每个字段值,但我希望它们一起作为加法值。.(硬币+宝石)值在ORDER BY中使用

Using this SQL query i can get coins field values... 使用此SQL查询,我可以获取钱币字段值...

SELECT user_id, meta_value as total_coins FROM wp_usermeta WHERE meta_key = '_coin' AND meta_value > 0 ORDER BY meta_value+0 DESC LIMIT 0,10

Coins Query Result 硬币查询结果

And using this to get gems field values... 并使用它来获取gems字段值...

SELECT user_id, meta_value as total_gems FROM wp_usermeta WHERE meta_key = '_gems' AND meta_value > 0 ORDER BY meta_value+0 DESC LIMIT 0,10

Gems Query Result 宝石查询结果

What i want is get _coin field value and then for that user_id get _gem field value and then addition those two values in one... like 690+21 = 711 as total_points.. Something like this.. 我想要的是获取_coin字段值,然后为该user_id获取_gem字段值,然后将这两个值合而为一...就像690 + 21 = 711作为total_points ..像这样。

`SELECT ( 

    SELECT meta_value FROM `wp_usermeta` as ue1

    WHERE meta_key = '_coin' AND meta_value > 0 ORDER BY meta_value+0 DESC LIMIT 0,50

) AS coins,
( 

    SELECT meta_value FROM `wp_usermeta` as ue2 

    WHERE ue2.user_id = ue1.user_id AND meta_key = '_gem' AND meta_value > 0 ORDER BY meta_value+0 DESC LIMIT 0,50

) AS gems,

coins+gems AS total_points

FROM wp_usermeta

ORDER BY total_points LIMIT 0, 50`

i know this SQL is not correct and that's why i need help.. please help me with this to correct this SQL 我知道此SQL不正确,这就是为什么我需要帮助..请帮助我以更正此SQL

Instead of several subquery you should use a join the same table and repeat the code for addition 而不是几个子查询,您应该使用联接相同的表并重复代码以进行添加

  SELECT ue1.meta_value coins , ue2.meta_value gems
       , ue1.meta_value + ue2.meta_value total_points
  FROM `wp_usermeta` as ue1
  INNER JOIN `wp_usermeta` as ue2 ON ue1.user ue2.user_id = ue1.user_id
      AND ue1.meta_key = '_coin' 
        AND ue2. meta_key = '_gem'
  WHERE ue1.meta_value > 0 
  AND   ue2.meta_value > 0 
  ORDER BY total_points LIMIT 0, 50

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM