| 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.
