SQL列名是关键字“category”

时间:2017-10-18 02:36:12

标签: sql oracle

此查询有效:

SELECT product_name, unit_price, order_due_date
FROM orders
FULL OUTER JOIN products ON orders.product_id = products.product_id
WHERE product_name = 'bun';

然而这个引发了一个错误:

  

ORA-00936:“缺少表达”

SELECT product_name, unit_price, order_due_date
FROM orders
FULL OUTER JOIN products ON orders.product_id = products.product_id
WHERE [category] = 'soft drink';

我无法确定第二个

的错误

1 个答案:

答案 0 :(得分:1)

如果查询中有多个表,则应始终限定列名。在您的第一个查询中,WHERE子句正在撤消FULL JOIN。事实上,我猜测INNER JOIN是最合适的。如果订单的产品不在products表中?

SELECT p.product_name, ?.unit_price, o.order_due_date
FROM orders o INNER JOIN
     products p
     ON o.product_id = p.product_id
WHERE p.product_name = 'bun';

对于您的第二个查询,[]不是Oracle中的分隔符。要么把它们排除在外:

WHERE category = 'soft drink'

或者,如果由于某些不明确的原因,列名实际上有这些字符,那么使用双引号:

WHERE "[category]" = 'soft drink';