我是从Oracle开始的。我使用SQL Developer,我正在尝试启动这样的SQL请求:
select date_depart,* from train where no_train='111';
显示错误消息:“缺少表达式” 我怎么能解决这个问题呢?
答案 0 :(得分:4)
如果要在*
通配符旁边使用任何其他列或表达式,则必须使用全名指定*
引用的表:
select no_train, train.* from train where no_train='111';
或使用别名:
select t.no_train, t.* from train t where no_train='111';
但是,当通配符*
获取所有列时,您会看到train_no
两次。列出您想要的列更好:
select t.train_no, t.train_type, t.depot, ... -- whatever your real columns are
from train t
where t.train_no = 111
如果列车编号实际上是数字数据类型,则不应将文字111
括在引号中。始终使用正确的数据类型,不要强制或依赖隐式数据转换。
答案 1 :(得分:3)
假设您希望包含列no_train
的结果后跟表格的所有列,包括将显示两次的no_train
,您可能需要添加别名:
select no_train, t.*
from train t
where no_train='111';
例如,使用像这样的表
create table train(no_train, descr) as ( select 111, 'descr' from dual);
这将给出:
SQL> select no_train, t.*
2 from train t
3 where no_train='111';
NO_TRAIN NO_TRAIN DESCR
---------- ---------- -----
111 111 descr