matlab设置columnname为空,没有列名被指定为"A"(No column name was specified for column 4 of 'a'.)...

这个问题,让我郁闷了半天。

问题是这样的,我要求出所有部门所发布的文章数;

每个文章都会属于一个部门;部门id的列名是dep_id;

SQL语句如下

select dep_id,count(*) from article group by dep_id

意思很简单,按部门Id,分组计算;输出结果

dep_id ----------- -----------

69 88

92 85

115 29

138 31

77 74

107 45

85 88

62 86

146 29

注意,第一个数据列名称是dep_id,第二个数据列没有名称;这也很正常,对吧(问题就出在这里),先不说它;

然后呢,我要知道哪个dep_id对应哪个部门名称,自然要用一个外联接,部门表名为depart;

SQL语句如下:

select * from depart as a

left join

(select dep_id,count(*) from article where art_atit!='' group by

dep_id) as b

on a.dep_id=b.dep_id

上面的语句看样子是没有问题;左外接联接,联接一个查询结果b;结果一执行,报错了,错误信息:

消息 8155,级别 16,状态 2,第 1 行

没有为第 2 列(属于 'b')指定列。

我不太明白了,去网上查了查,也没有什么结果,看别人的相关评论,无意中看到“空列必须加AS”,哦,好像是……

select dep_id,count(*)这句,改成select dep_id,count(*) as 'count'

试试,代码如下:

select * from depart as a

left join

(select dep_id,count(*) as 'count' from article where art_atit!=''

group by dep_id) as b

on a.dep_id=b.dep_id

这样就正常了。

原来,在外联接时,列名不可以为空;像count(*)或avg(*)之类,后面一定要加上 as '列名'。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值