Mysql 使用子查询时WHERE子句中的未知列
我的问题如下: 选择*, 从'users'中选择'name',其中'users'。'id`=```` 作为'listings'中的'fullName',其中'fullName'类似于'%praveen%'; 但当我执行上述查询时,我得到了以下错误:Mysql 使用子查询时WHERE子句中的未知列,mysql,sql,subquery,where-clause,Mysql,Sql,Subquery,Where Clause,我的问题如下: 选择*, 从'users'中选择'name',其中'users'。'id`=```` 作为'listings'中的'fullName',其中'fullName'类似于'%praveen%'; 但当我执行上述查询时,我得到了以下错误: #1054 - Unknown column 'fullName' in 'where clause' 我知道这只虫子已经死了。我不确定这方面的解决办法是什么,除了做以下事情: SELECT *, ( SELECT `name` FROM
#1054 - Unknown column 'fullName' in 'where clause'
我知道这只虫子已经死了。我不确定这方面的解决办法是什么,除了做以下事情:
SELECT *, (
SELECT `name` FROM `users` WHERE `users`.`id`=`listings`.`user`
) FROM `listings` WHERE (SELECT `name` FROM `users` WHERE users`.`id`=`listings`.`user`) LIKE '%praveen%';
除了创建视图或使用类似于上述的查询之外,还有其他方法可以做到这一点吗?我试着提出其他问题:
我找不到更好的解决办法。在这种情况下我能做的最好的是什么?提前感谢。我认为这是您所追求的正确语法:
select l.*, u.name as fullname
from listings l
join users u
on l.user = u.id
where u.name like '%praveen%'
试试这个
SELECT *
FROM
(
SELECT *
, (SELECT `name`
FROM `users` WHERE `users`.`id`=``.``
) AS `fullName`
FROM `listings`
) Q
WHERE `Q`.`fullName` LIKE '%praveen%';
您可以使用一个变量:
SELECT *, @var_fullName := (
SELECT `name`
FROM `users`
WHERE `users`.`id`=``.``
) AS `fullName`
FROM `listings`
WHERE @var_fullName LIKE '%praveen%';
这看起来像三重子查询!它应该更快;在这种情况下,您没有理由在选择列表中有子查询。