MySQL按2行的计算值排序

标签 mysql

我正在尝试创建一个 MySQL 语句,该语句将按语句本身计算的值进行排序。我的表格如下所示:

posts
+----+-----------+--------------+
| ID | post_type | post_content |
+----+-----------+--------------+
|  1 |      post |        Hello |
|  2 |      post |        world |
+----+-----------+--------------+

postmeta
+---------+----------+------------+
| post_id | meta_key | meta_value |
+---------+----------+------------+
|       1 |    price |         50 |
|       1 |   retail |        100 |
|       2 |    price |         60 |
|       2 |   retail |         90 |
+---------+----------+------------+

我正在尝试计算一个称为储蓄的值(ID=1.5ID= 为 .3 2) 然后按它排序。这是我到目前为止所拥有的,但我不确定如何跨两行进行计算(我发现的所有内容都是关于列之间的计算)。

SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = 'Price'
AND wposts.post_type = 'post'
ORDER BY wpostmeta.meta_value DESC

感谢您的帮助!

最佳答案

这是一个简单的连接,它将计算每个帖子的节省量,假设 meta_value 是数字数据类型。

select posts.id,
       (retail.meta_value - price.meta_value) * 1.0 / retail.meta_value as savings
  from posts,
       (select * from postmeta where meta_key = 'price') as price,
       (select * from postmeta where meta_key = 'retail') as retail
 where posts.id = price.post_id
   and posts.id = retail.post_id
   and posts.post_type = 'post'
 order by savings;


+----+---------+
| id | savings |
+----+---------+
|  1 | 0.50000 |
|  2 | 0.33333 |
+----+---------+

关于MySQL按2行的计算值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824336/

相关文章:

mysql选择具有最低值的记录

php - Mysqli 多行插入,简单的多插入查询

mysql - 如何使用sql server从excel获取数据

php - json_encode/decode char 麻烦

javascript - 如何允许仅删除登录用户

mysql - 从drupal数据库用户表中获取记录

mySql - 选择但不显示特定行的重复项

MySQL建表语句语法错误

php - 在 codeigniter 中的不同用途

php - 尝试制作 Android 服务