1

我在练习中被要求从两列 List_price 和 discount_amount 中计算三个值。我的部分问题是我的编程本能想要阻碍我完全掌握所教内容的能力。

有人可以告诉我代码有什么问题并提供一个模板来更好地处理这种情况。

SELECT list_price, discount_percent, product_name, raw_percent,
    discount_amount, (list_price - discount_amount) AS discount_price 
FROM ( 
     SELECT discount_percent,
                    list_price,
                    (discount_percent /10) = raw_percent 
                    (list_price * raw_percent) = discount_amount    
) ORDER BY discount_price DESC LIMIT 5; 
4

1 回答 1

1

派生表必须有自己的别名

MySQL 有一个要求,如果您要访问由子查询返回的结果集的列,那么子查询应该在外部查询中正确别名(即使该别名实际上并未在查询中使用)。

您需要为 WHERE 子句中使用的子查询设置别名:

SELECT ...
FROM (
    SELECT ...
) AS some_alias
ORDER BY discount_price DESC LIMIT 5; 

关于您的查询的其他评论:

  • 列 « product_name » 应由子查询返回,否则在外部查询中将不可用
  • « raw_percent » 之后的子查询中缺少逗号
于 2019-02-15T20:32:04.537 回答