按生成列中的值对 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))
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))