我想查询计数不。在表的一列中使用相同的值,并将其与另一个表连接,并从该表中获取一列

时间:2016-04-04 11:21:23

标签: sql oracle oracle11g

SELECT 
    S.MESSAGE_ID, S.USERNAME, C.count(MESSAGE_ID)
FROM 
    MESSAGE S, MESSAGE_LIKE C
WHERE
    S.MESSAGE_ID = C.MESSAGE_ID 
GROUP BY 
    MESSAGE_ID;

我得到了:

  

ORA-00918:列模糊定义

     
      
  1. 00000 - “栏目模糊定义”
      *原因:
      *动作:行错误:13列:11
  2.   

2 个答案:

答案 0 :(得分:2)

我不知道这样的语法甚至存在于oracle中,会猜测它会抛出一个错误c.count(message_id)未知......无论如何,如果你想用一个列做一些事情,那就更多了在查询中有一个表,您必须指定要采用的列,就像在where子句中所做的那样。所以你有两个地方,1)计数2)group by子句。

 SELECT S.MESSAGE_ID, S.USERNAME, count(c.MESSAGE_ID)
 FROM MESSAGE S
 INNER JOIN MESSAGE_LIKE C
 ON (S.MESSAGE_ID=C.MESSAGE_ID )
 GROUP BY S.MESSAGE_ID,S.username;

此外,您的查询还有另一个问题,即在ORACLE中您必须在select by上指定的group by子句每个列中指定,而不是与聚合函数一起使用。

最后,我已将您的连接语法从隐式(逗号分隔)更改为显式连接语法。请避免使用此连接语法,因为在连接两个表/左连接时会导致错误。显式连接语法更容易理解。

答案 1 :(得分:0)