| Bug #68529 | GROUP_CONCAT(.... ORDER BY ...) prevents ORDER BY if using a VIEW | ||
|---|---|---|---|
| Submitted: | 28 Feb 2013 20:43 | Modified: | 8 Mar 2018 23:44 |
| Reporter: | Aurelien Marchand | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: DML | Severity: | S1 (Critical) |
| Version: | 5.0/5.1/5.5 | OS: | Linux (gentoo/i686) |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | GROUP_CONCAT ORDER BY VIEW | ||
[28 Feb 2013 20:43]
Aurelien Marchand
[28 Feb 2013 20:45]
Aurelien Marchand
One more step to reproduce the issue: after creating the view, do: SELECT * from v1; This will show the error.
[1 Mar 2013 7:45]
Valeriy Kravchuk
Please, check with a newer version, 5.0.91+ at least. This is what I see in 5.6.10 (after adding missing VALUES keyword):
C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql -uroot -proot -P3314 test
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.10-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE TABLE t1 (id1 int);
Query OK, 0 rows affected (0.94 sec)
mysql> CREATE TABLE t2 (id2 int, id1 int);
Query OK, 0 rows affected (0.31 sec)
mysql> INSERT INTO t1 VALUES (1),(2),(3);
Query OK, 3 rows affected (0.11 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> INSERT INTO t2 VALUES (1,1), (2,1), (3,2), (4,2), (5,3);
Query OK, 5 rows affected (0.08 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT
-> t1.id1,
-> group_concat(id2 order by id2) as grouped_ids
-> FROM
-> t1 INNER JOIN
-> t2 USING(id1)
-> GROUP BY
-> id1
-> ORDER BY
-> id1, grouped_ids;
+------+-------------+
| id1 | grouped_ids |
+------+-------------+
| 1 | 1,2 |
| 2 | 3,4 |
| 3 | 5 |
+------+-------------+
3 rows in set (0.20 sec)
mysql> create view v1 as
-> SELECT
-> t1.id1,
-> group_concat(id2 order by id2) as grouped_ids
-> FROM
-> t1 INNER JOIN
-> t2 USING(id1)
-> GROUP BY
-> id1
-> ORDER BY
-> id1, grouped_ids;
Query OK, 0 rows affected (0.08 sec)
mysql> select * from v1;
+------+-------------+
| id1 | grouped_ids |
+------+-------------+
| 1 | 1,2 |
| 2 | 3,4 |
| 3 | 5 |
+------+-------------+
3 rows in set (0.03 sec)
[1 Mar 2013 13:19]
MySQL Verification Team
Error 1250 presents on 5.0,5.1,5.5. On another hand 5.6.10 behaves how Valeriy commented.
d:\dbs>d:\dbs\5.0\bin\mysql -uroot --port=3500 --prompt="mysql 5.0 >"
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.97-Win X64 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
<cut>
mysql 5.0 >INSERT INTO t2 VALUES (1,1), (2,1), (3,2), (4,2), (5,3);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql 5.0 >CREATE VIEW v1 AS
-> SELECT
-> t1.id1,
-> group_concat(id2 order by id2) as grouped_ids
-> FROM
-> t1 INNER JOIN
-> t2 USING(id1)
-> GROUP BY
-> id1
-> ORDER BY
-> id1, grouped_ids;
Query OK, 0 rows affected (0.03 sec)
mysql 5.0 > select * from v1;
ERROR 1250 (42000): Table 't2' from one of the SELECTs cannot be used in field list
d:\dbs>d:\dbs\5.1\bin\mysql -uroot --port=3510 --prompt="mysql 5.1 >"
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.69-Win X64 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
<CUT>
mysql 5.1 > select * from v1;
ERROR 1250 (42000): Table 't2' from one of the SELECTs cannot be used in field list
d:\dbs>d:\dbs\5.5\bin\mysql -uroot --port=3541 --prompt="mysql 5.5 >"
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.31 Source distribution
<CUT>
mysql 5.5 > select * from v1;
ERROR 1250 (42000): Table 't2' from one of the SELECTs cannot be used in field list
mysql 5.5 >
[8 Mar 2018 23:44]
Roy Lyseng
Posted by developer: Fixed in 5.6.10 and later.
