选择不起作用 - Oracle

时间:2016-12-23 13:52:25

标签: sql oracle

我是从Oracle开始的。我使用SQL Developer,我正在尝试启动这样的SQL请求:

select date_depart,* from train where no_train='111';

显示错误消息:“缺少表达式” 我怎么能解决这个问题呢?

2 个答案:

答案 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