mysql - 将两个 MYSQL 查询列结果合并为一个以在 ORDER BY 中使用
问题描述
我有两个查询来获取用户硬币和宝石价值。我可以单独获取每个字段值,但我希望它们一起作为附加值..(硬币+宝石)值在 ORDER BY 中使用
使用此 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
并使用它来获取 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
我想要的是获取_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`
我知道这个 SQL 不正确,这就是我需要帮助的原因。请帮我纠正这个 SQL
解决方案
而不是几个子查询,您应该使用连接同一个表并重复添加代码
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
推荐阅读
- python - Tensorflow 的 name_scope 在 Tensorboard 中不起作用
- python-3.x - AttributeError:模块'pygame.event'没有属性'type'
- python - 如何在函数内打印变量
- vue.js - 我们如何在vue js中使用分页实现表格过滤和排序
- omnet++ - 比较 lorawan 的 Flora(inet) 和 Ns3
- ruby-on-rails - “您正在连接到 Redis v3.2.9,Sidekiq 需要 Redis v4.0.0 或更高版本?”
- python-3.x - 如何在MongoDB中更新后保存对象数组?
- android - 如何从接口返回数据
- deployment - 已解决:即使本地主机说查询存在,Sanity.io 部署也会失败
- html - 如何在列表项空间的底部浮动文本?