天天看點

ORA-00979 不是group by 表達式。涉及#{}與${}

主要是公司生産發版後造成了問題,是以印象非常深刻。最後請教的大佬,敲了2,3下,就好了。在此,謝謝龍哥,麼麼哒!

由于工作中的sql 特别長(7,8百行),我就直接截圖說明。這裡的group by 絕不是你們想的那樣。具體請看:

ORA-00979 不是group by 表達式。涉及#{}與${}

這個就是select 後面的字段,其中 SC_DISPLAY_FLAG; 該字段為别名,該字段主體内有變量,loginName。我們都知道Group By 後面不能使用别名,Order By 後面可以使用别名。一般我們也使用 #{loginName}.這裡這樣寫是有原因的。

是以請看:

ORA-00979 不是group by 表達式。涉及#{}與${}

這個隻是結構,因為字段太多,還要在截圖。

ORA-00979 不是group by 表達式。涉及#{}與${}

這個就是group by 後面對應的 SC_DISPLAY_FLAG 的主體。一般是select 什麼,group by後面就要跟什麼。但是這裡主體内有變量,如果使用 #{loginName} ,就會報錯!歸根到底我覺得最大的原因就是:

group By 後面的字段,字段主體有變量的情況下,是不能用 #{ }, 而要用 ${}!因為#{}會被解析成 ?,group by 後面跟了 ?,這種字段就是不确定的,那麼還怎麼分組?

就會報錯 不是group by 表達式!

另外一點:那個 ‘${loginName}’ 的單引号,可以去掉。不是影響因素。

希望看到的人請給個贊!部落客也會更加努力!

繼續閱讀