Sql 在语句中使用时缺少表达式

Sql 在语句中使用时缺少表达式,sql,oracle,Sql,Oracle,在实现以下查询时: select distinct(city) from station where substr(distinct(city),1,1) IN ['A','E','I','O','U']; 我得到以下错误: 第1行错误: ORA-00936:缺少表达式 使用oraclesql。 我仍然是一个使用SQL的初学者,因此无法理解这一点。没有必要在where中编写distinct,因为在您提到在何处选择列时,您将获得distinct值。 和中的语法 expression IN (

在实现以下查询时:

select distinct(city) 
from station 
where substr(distinct(city),1,1) IN ['A','E','I','O','U'];
我得到以下错误:

第1行错误: ORA-00936:缺少表达式

使用oraclesql。
我仍然是一个使用SQL的初学者,因此无法理解这一点。

没有必要在where中编写distinct,因为在您提到在何处选择列时,您将获得distinct值。 和中的语法

expression IN (value1, value2, ... value_n);
更正的查询

select distinct city
from station 
where substr(city,1,1) IN ('A','E','I','O','U');

你的陈述中有两处拼写错误

使用经典的副词而不是括号。 distinct子句不能用作substr内的表达式 最终的结果将变得截然不同。 使您的sql如下所示:

select distinct(city) 
from station 
where substr(city,1,1) IN ('A','E','I','O','U');
最好使用GROUP BY而不是DISTINCT。

DISTINCT不是SQL AFAIK中的函数。
SELECT city
FROM station 
WHERE SUBSTR(city,1,1) IN ('A','E','I','O','U')
GROUP BY city;