由於MySQL的擴展爲group by
,這對MySQL很有效。不幸的是,當查詢聚合查詢時,編譯器不會將子查詢視爲「常量」。所以,這只是group by
條款中的另一個表達式。
這裏是寫的查詢是所有三個數據庫兼容(而不是休眠)的方式:
SELECT MIN(t.startTime) AS StartTime, MAX(t.endTime) AS EndTime, MAX(occurrences)
from table1 t1 cross join
(SELECT SUM(t2.occurrences) as occurrences from table2 t2) t2;
我要補充,也可以不屬於子查詢添加到group by
條款,雖然下面將在甲骨文和Postgres工作:
SELECT MIN(t.startTime) AS StartTime, MAX(t.endTime) AS EndTime,
(SELECT SUM(t2.occurances) from table2 t2)
FROM table1 t1
GROUP BY 3;
編輯:
HQL是非常嚴格的標準相比,SQL。以下內容出自接近你們兩個想要的東西,但它至少返回兩行,而不是1:
select t.starttime, t.endtime, (SELECT SUM(t2.occurances) from table2 t2)
from table1 t
where t.starttime = (select min(starttime) from table1) or
t.endtime = (select max(endtime) from table1);
現在我明白了--ORA-00979:不是GROUP BY表達式 – Sayan 2014-09-24 14:04:17
@Sayan糾正了查詢;現在它的作品:http://sqlfiddle.com/#!4/b206c/3 – Rimas 2014-09-24 14:16:44
謝謝!無論如何,我可以做到這一點沒有GROUP BY? – Sayan 2014-09-24 15:12:59