mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Fixed bug #12762:
allowed set functions aggregated in outer subqueries, allowed nested set functions.
This commit is contained in:
@@ -2988,3 +2988,146 @@ max(fld)
|
||||
1
|
||||
drop table t1;
|
||||
purge master logs before (select adddate(current_timestamp(), interval -4 day));
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
CREATE TABLE t2 (c int, d int);
|
||||
CREATE TABLE t3 (e int);
|
||||
INSERT INTO t1 VALUES
|
||||
(1,10), (2,10), (1,20), (2,20), (3,20), (2,30), (4,40);
|
||||
INSERT INTO t2 VALUES
|
||||
(2,10), (2,20), (4,10), (5,10), (3,20), (2,40);
|
||||
INSERT INTO t3 VALUES (10), (30), (10), (20) ;
|
||||
SELECT a, MAX(b), MIN(b) FROM t1 GROUP BY a;
|
||||
a MAX(b) MIN(b)
|
||||
1 20 10
|
||||
2 30 10
|
||||
3 20 20
|
||||
4 40 40
|
||||
SELECT * FROM t2;
|
||||
c d
|
||||
2 10
|
||||
2 20
|
||||
4 10
|
||||
5 10
|
||||
3 20
|
||||
2 40
|
||||
SELECT * FROM t3;
|
||||
e
|
||||
10
|
||||
30
|
||||
10
|
||||
20
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20);
|
||||
a
|
||||
2
|
||||
4
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)<d);
|
||||
a
|
||||
2
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>d);
|
||||
a
|
||||
2
|
||||
4
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2
|
||||
WHERE d >= SOME(SELECT e FROM t3 WHERE MAX(b)=e));
|
||||
a
|
||||
2
|
||||
3
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2
|
||||
WHERE EXISTS(SELECT e FROM t3 WHERE MAX(b)=e AND e <= d));
|
||||
a
|
||||
2
|
||||
3
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2
|
||||
WHERE d > SOME(SELECT e FROM t3 WHERE MAX(b)=e));
|
||||
a
|
||||
2
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2
|
||||
WHERE EXISTS(SELECT e FROM t3 WHERE MAX(b)=e AND e < d));
|
||||
a
|
||||
2
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2
|
||||
WHERE MIN(b) < d AND
|
||||
EXISTS(SELECT e FROM t3 WHERE MAX(b)=e AND e <= d));
|
||||
a
|
||||
2
|
||||
SELECT a, SUM(a) FROM t1 GROUP BY a;
|
||||
a SUM(a)
|
||||
1 2
|
||||
2 6
|
||||
3 3
|
||||
4 4
|
||||
SELECT a FROM t1
|
||||
WHERE EXISTS(SELECT c FROM t2 GROUP BY c HAVING SUM(a) = c) GROUP BY a;
|
||||
a
|
||||
3
|
||||
4
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING EXISTS(SELECT c FROM t2 GROUP BY c HAVING SUM(a) = c);
|
||||
a
|
||||
1
|
||||
3
|
||||
4
|
||||
SELECT a FROM t1
|
||||
WHERE a < 3 AND
|
||||
EXISTS(SELECT c FROM t2 GROUP BY c HAVING SUM(a) != c) GROUP BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
SELECT a FROM t1
|
||||
WHERE a < 3 AND
|
||||
EXISTS(SELECT c FROM t2 GROUP BY c HAVING SUM(a) != c);
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
2
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a < ALL(SELECT t2.c FROM t2 GROUP BY t2.c
|
||||
HAVING EXISTS(SELECT t3.e FROM t3 GROUP BY t3.e
|
||||
HAVING SUM(t1.a+t2.c) < t3.e/4));
|
||||
a
|
||||
1
|
||||
2
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a > ALL(SELECT t2.c FROM t2
|
||||
WHERE EXISTS(SELECT t3.e FROM t3 GROUP BY t3.e
|
||||
HAVING SUM(t1.a+t2.c) < t3.e/4));
|
||||
a
|
||||
4
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a > ALL(SELECT t2.c FROM t2
|
||||
WHERE EXISTS(SELECT t3.e FROM t3
|
||||
WHERE SUM(t1.a+t2.c) < t3.e/4));
|
||||
ERROR HY000: Invalid use of group function
|
||||
SELECT t1.a from t1 GROUP BY t1.a HAVING AVG(SUM(t1.b)) > 20;
|
||||
ERROR HY000: Invalid use of group function
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a IN (SELECT t2.c FROM t2 GROUP BY t2.c
|
||||
HAVING AVG(t2.c+SUM(t1.b)) > 20);
|
||||
a
|
||||
2
|
||||
3
|
||||
4
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a IN (SELECT t2.c FROM t2 GROUP BY t2.c
|
||||
HAVING AVG(SUM(t1.b)) > 20);
|
||||
a
|
||||
2
|
||||
4
|
||||
SELECT t1.a, SUM(b) AS sum FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a IN (SELECT t2.c FROM t2 GROUP BY t2.c
|
||||
HAVING t2.c+sum > 20);
|
||||
a sum
|
||||
2 60
|
||||
3 20
|
||||
4 40
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
Reference in New Issue
Block a user