按生成列中的值对 mysql table 行进行排序

Order mysql table rows by value from generated column

MYSQL菜鸟在此,多多包涵

我有一个名为 Cars 的 table 存储有关汽车的数据:

我有一个名为 priority 的 table,它以 0-5 的等级存储每辆汽车特性对我的重要性。所以这个 table 可能看起来像:

+-----+-------+-------+ | 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。但是我不确定如何形成这个查询。

非常感谢帮助。

您必须将主 select 包装到另一个 select 中,后者将包含 order 子句。像这样:

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

尝试使用

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