请看如下的SQL语句,执行这个语句时将失败,请问怎样修改可以解决这一问题
SELECT c.customer_id, o.order_id, o.order_date, p.product_name
FROM customer c, curr_order o, product p
WHERE customer.customer_id=curr_order.customer_id
AND oproduct_id=p.product_id
ORDER BY o.ordei_amount;A.在ORDER BY子句中使用表名
B.将表的别名从WHERE子句中去掉
C.在SELECT列表中包括order_amount列
D.在WHERE子句中使用表的别名以替代表名
E.从ORDER BY子句中去掉表的别名并且只使用列名
参考答案:D
解析: 这一题是测试对在连接操作中表别名的使用的理解。根据有关连接中表别名使用的介绍,可知别名一经定义,在整个查询语句中就只能使用表的别名而不能再使用表名,因此完全可以确定只有选项D是正确的。
本题的ORDER BY子句是正确的,所以不需要做任何修改。如果在该子句中使用表名反倒变成错误的了,所以选项A是错误的。如果从该子句中去掉表的别名,并且只使用列名该子句也是错误的,所以选项E是错误的。因为在WHERE子句中根本就没有使用表的别名,所以也就没法去掉。而且造成这个SQL语句出问题的原因正是在WHERE子句没有使用表的别名,因此选项B也肯定是错误的。因为在SELECT列表中包括order_amount列并不能更改在WHERE子句中的错误,所以选项C也是错误的。