按生成列的值排序mysql表行

时间:2016-08-06 21:06:36

标签: mysql stored-procedures sql-order-by stored-functions

MYSQL新秀在这里,所以请耐心等待。

我有一个名为Cars的表,用于存储有关汽车的数据:

  • 模型
  • MPG
  • 价格
  • 座位数

我有一张名为priority的表格,可以按0-5的比例存储每辆车的特征对我的重要性。所以这个表可能看起来像:

+-----+-------+-------+ | MPG | Price | Seats | +-----+-------+-------+ | 0 | 2 | 3 | +-----+-------+-------+

我希望能够为每个Car生成一个得分,如下所示:

score = (car.MPG * priority.MPG) + (car.Price * priority.Price) + (car.seats * priority.seats)

我想基本上做Select * from cars order by score。但我不确定如何形成这个查询。

非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

尝试使用

select a.* from cars a, priority b order by ((a.mpg* b.mpg)+(a.price*b.price)+(a.seats*b.seats))

答案 1 :(得分:0)

您必须将main select包装到另一个包含order子句的select中。像这样:

SELECT * FROM (SELECT c.*, ((c.MPG * priority.MPG) + (c.Price * priority.Price) + (c.seats * priority.seats)) AS score FROM cars) x ORDER BY x.score