为什么此查询无效,我尝试将字段idlic
与属于该idlic
的现有用户进行比较。
来自mysql的返回消息是一个未知列,如何保存比较中使用的值。
select *, (select licencia from cuentas where idcuenta = ht.cuenta) as idlic
from hojastrabajo ht
where idlic = (select licencia from asociadolicencia where usuario = (select idusuario from usuarios where nombre = 'desarrollador' ))
答案 0 :(得分:1)
您不能在定义它的同一select
或where
中使用列别名。 MySQL有一个方便的解决方法,您可以使用having
子句代替:
select ht.*, (select licencia from cuentas where idcuenta = ht.cuenta) as idlic
from hojastrabajo ht
having idlic = (select licencia
from asociadolicencia
where usuario = (select idusuario from usuarios where nombre = 'desarrollador' )
);
答案 1 :(得分:1)
你可以尝试一下吗?
select ht.*, c.licencia
from hojastrabajo ht
left join cuentas c
on c.idcuenta = ht.cuenta
where c.licencia =
(select licencia from asociadolicencia where usuario =
(select idusuario from usuarios where nombre = 'desarrollador' )
)
答案 2 :(得分:0)
你不能使用你带来的东西" as idlic"在哪里声明。将查询作为选择字段之一也不是一个好主意,如果(select licencia ...)返回多个结果。你需要加入这些表并将整个条件放在where语句中。