我有如下查询:
SELECT *, (
SELECT `name` FROM `users` WHERE `users`.`id`=``.``
) AS `fullName` FROM `listings` WHERE `fullName` LIKE '%praveen%';
但是当我执行上面的查询时,我收到了这个错误:
#1054 - Unknown column 'fullName' in 'where clause'
我知道这个错误是documented。除了做类似的事情之外,我不确定除此之外的解决方法是什么:
SELECT *, (
SELECT `name` FROM `users` WHERE `users`.`id`=`listings`.`user`
) FROM `listings` WHERE (SELECT `name` FROM `users` WHERE users`.`id`=`listings`.`user`) LIKE '%praveen%';
除了创建视图或使用上述查询之外,还有其他方法吗?我试过引用其他问题:
我找不到更好的解决方案。在这种情况下,我能做的最好的是什么?提前谢谢。
答案 0 :(得分:1)
我认为这是你所追求的正确语法:
select l.*, u.name as fullname
from listings l
join users u
on l.user = u.id
where u.name like '%praveen%'
答案 1 :(得分:1)
试试这个......
SELECT *
FROM
(
SELECT *
, (SELECT `name`
FROM `users` WHERE `users`.`id`=``.``
) AS `fullName`
FROM `listings`
) Q
WHERE `Q`.`fullName` LIKE '%praveen%';
答案 2 :(得分:0)
您可以使用变量:
SELECT *, @var_fullName := (
SELECT `name`
FROM `users`
WHERE `users`.`id`=``.``
) AS `fullName`
FROM `listings`
WHERE @var_fullName LIKE '%praveen%';