首先,我是 SQL 方面的 super 新手,所以我不具备提出简单问题的知识,但我会尽力而为。这是我试图提出的查询:
query = conn1.prepareStatement(
"select Industry, Ticker, TransDate, min(TransDate), max(TransDate), " +
" count(distinct TransDate) as TradingDays, " +
" count(distinct Ticker) as TickerCnt, " +
" openPrice, closePrice " +
" from Company left outer join PriceVolume using(Ticker) " +
" group by Industry " +
" having TradingDays >= 150 " +
" order by Industry, Ticker, TransDate");
ResultSet rs = query.executeQuery();
错误如下:
SQLException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'reedy330.Company.Ticker' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
如果我在 GROUP BY 子句中包含 Ticker 和 TransDate,则不再发生异常,但 ResultSet
是空的。我想做的是 ResultSet
一切都在 SELECT
子句作为元素。我根据作业描述中的类似示例查询构建了此查询,这就是我不太理解它的原因。
这是数据库的布局,表名用冒号加粗,键以粗体显示:
PriceVolume:
Ticker
TransDate
OpenPrice
HighPrice
LowPrice
ClosePrice
Volume
AdjustedGrossCompany:
Ticker
Name
Industry
Location
有什么想法吗?
最佳答案
“sql_mode=only_full_group_by”对您来说是必要的吗?
如果没有,请更改sql_mode:
SET sql_mode = '';
或者
SET sql_mode = 'STRICT_ALL_TABLES';
关于mysql - Java 中的 SQL;处理 SELECT 和 GROUP BY 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35978508/