Bug #42374 | using a value from DUAL in a subquery returns Unknown column | ||
---|---|---|---|
Submitted: | 27 Jan 2009 13:53 | Modified: | 27 Jan 2009 17:18 |
Reporter: | Werner Schram | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S3 (Non-critical) |
Version: | 5.1.30 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | DUAL sub-query |
[27 Jan 2009 13:53]
Werner Schram
[27 Jan 2009 15:14]
Valeriy Kravchuk
I have the same behaviour both with DUAL and with real table. Look: C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql -uroot -proot test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.30-enterprise-gpl-advanced-debug-log MySQL Enterprise Server - Advanced Edition Debug (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE t1 ( f1 INTEGER ); Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO t1 (f1) SELECT 1 AS x FROM DUAL WHERE NOT EXISTS (SELECT * FR OM t1 WHERE -> f1=x); ERROR 1054 (42S22): Unknown column 'x' in 'where clause' mysql> create table mydual(c1 int); Query OK, 0 rows affected (0.02 sec) mysql> insert into mydual values(1); Query OK, 1 row affected (0.05 sec) mysql> INSERT INTO t1 (f1) SELECT 1 AS x FROM mydual WHERE NOT EXISTS (SELECT * FROM t1 WHERE -> f1=x); ERROR 1054 (42S22): Unknown column 'x' in 'where clause' mysql> select * from mydual; +------+ | c1 | +------+ | 1 | +------+ 1 row in set (0.06 sec) Do I miss something in my test case?
[27 Jan 2009 15:44]
Werner Schram
No you are not missing anything. It seems that I am wrong with my comment about it being related to the DUAL table. I have probably used the 5.0.42 server by mistake to check if it was related to the DUAL table. I'm sorry for that.
[27 Jan 2009 17:18]
Valeriy Kravchuk
OK, then I think this is NOT a bug. You can not refer to column alias in WHERE, according to http://dev.mysql.com/doc/refman/5.1/en/problems-with-alias.html.