mysql出现错误“ Every derived table must have its own alias”
Every derived table must have its own alias
这句话的意思是说每个派生出来的表都必须有一个自己的别名
一般在多表查询时,会出现此错误。
因为,进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名
把MySQL语句改成:select count(*) from (select * from ……) as total;
问题就解决了,虽然只加了一个没有任何作用的别名total,但这个别名是必须的
select name1 name, java, jdbc, hibernate,total
结果正确:
+----------+------+------+-----------+-------+
| name
+----------+------+------+-----------+-------+
| wangwu
| lisi
| zhangsan |
+----------+------+------+-----------+-------+
3 rows in set (0.02 sec)
我是在工作站在线率统计的时候遇到这个问题的:
问题:工作站在线的台数大于总台数,
原因:有人删除了部分工作站,但是中间表的工作站信息没有删除。
那么最终的sql语句如下:
SELECT t.unitcode, sum(t.onlinetime/3600) as num1,count(DISTINCT t.hostname) as num2 from (select unitcode,onlinetime,hostname from pe_stationonline_stat where hostname in ('-1','admin-PC-123','admin-PC-124','admin-PC-125','admin-PC-126','jiangzg','ZCS-JLYW37500033','ZCS-JLYW37500037','ZCS-JLYW57480007','ZCS-JLYW57480015','ZCS-JLYW67250005') and statdate BETWEEN '2018-01-01' AND '2018-01-05') as t GROUP BY t.unitcode;