错误代码:1054。'where子句'中的未知列''

时间:2018-01-28 12:19:47

标签: mysql sql

delete ana.* from table1 as ana
where 
ana.qname=(select ID from tab1 where LOCAL_NAME='xxxxx')
and exists(select 'x' from table2 an 
where
ana.node_id=an.id and 
an.QNAME_ID IN (select ID from tab1 where LOCAL_NAME in('bbb')));

为什么上面的查询在mysql.same中不起作用查询在oracle中工作。

  

错误代码:1054。“where子句”

中的未知列'ana.qname'

1 个答案:

答案 0 :(得分:0)

先验,您的查询看起来不错。我首先将其格式化并限定所有列名称:

delete ana
    from table1 ana
    where ana.qname = (select t1.ID
                       from tab1 t1
                       where t1.LOCAL_NAME = 'xxxxx'
                      ) and
          exists (select 1
                  from table2 an
                  where ana.node_id = an.id and
                        an.QNAME_ID IN (select t1.ID
                                        from tab1 t1
                                        where t1.LOCAL_NAME in ('bbb')
                                       )
                 );

我认为错误非常明确:table1.qname不存在。我还要补充说,比较名为" name"被称为" id"看起来很可疑。我怀疑你只是在那里使用错误的列名。意图可能是qname_id