2014-10-10 124 views
0

当前我有以下代码,第I部分和第II部分工作正常。 但是,当我尝试联盟,两个临时表,它让我给我错误消息 “未知的列'名称'在'字段列表'”,即使我已经尝试了很多时间来更改名称在临时表中提交'姓名'。错误消息:字段列表中的字段列表中的未知列

CREATE TEMPORARY TABLE IF NOT EXISTS inp_cnt AS(
SELECT a.name, count(DISTINCT ad.pub_id) AS c 
FROM author AS a 
INNER JOIN authored AS ad ON a.id = ad.author_id 
INNER JOIN inproceedings AS inp ON ad.pub_id = inp.pub_id 
WHERE inp.booktitle = "SIGMOD conference" OR inp.booktitle = "KDD" OR inp.booktitle = "VLDB" 
GROUP BY ad.author_id); 

CREATE TEMPORARY TABLE IF NOT EXISTS ar_cnt AS(
SELECT a.name, count(DISTINCT ad.pub_id) AS c 
FROM author AS a 
INNER JOIN authored AS ad ON a.id = ad.author_id 
INNER JOIN article AS ar ON ad.pub_id = ar.pub_id 
WHERE ar.journal = "PVLDB" 
GROUP BY ad.author_id); 


SELECT name,sum(c) AS total 
FROM (
SELECT name,c FROM inp_cnt 
UNION ALL 
SELECT name, c FROM ar_cnt 
) as tmp 
GROUP BY name 
ORDER BY total DESC 
LIMIT 20; 

有人可以提供一些提示吗?我得到这个错误味精,因为名称是一个特殊的关键字在SQL?

回答

0

尝试将最后查询:

SELECT tmp.name 
     ,SUM(tmp.c) AS total 
FROM (SELECT name 
        ,c 
      FROM  inp_cnt 
      UNION ALL 
      SELECT name 
        ,c 
      FROM  ar_cnt 
     ) AS tmp 
GROUP BY tmp.name 
ORDER BY total DESC 
LIMIT 20; 

所以你在Group Bytmp.name

+0

谢谢,我试过了,仍然没有工作。似乎它无法检测到查询中的所有'名称'。 – Mona 2014-10-10 13:31:22

+0

为inp_cnt和ar_cnt表,我已经打印出来了,他们两个在结果中都有正确的名称和c。 – Mona 2014-10-10 13:32:07

+0

@mona,尝试向'SELECT'部分添加'tmp.'别名。 – christiandev 2014-10-10 13:58:57

相关问题