Mysql 只解析连接的左侧

Mysql 只解析连接的左侧,mysql,sql,select,join,left-join,Mysql,Sql,Select,Join,Left Join,在下面的代码中,我希望将表c_files cf与second查询的结果连接在两个括号内,即别名x SELECT f_cl_path f,cf.f_id, 'xx' as jo FROM c_files cf LEFT JOIN (SELECT f_cl_path f, f_id, f_workgroup, 'yy' as jo FROM myOtherTable WHERE f_workgroup ='1234' AND f_status<=2) x ON x.

在下面的代码中,我希望将表c_files cf与second查询的结果连接在两个括号内,即别名x

SELECT f_cl_path f,cf.f_id, 'xx' as jo 
FROM c_files cf 
LEFT JOIN 
    (SELECT f_cl_path f, f_id, f_workgroup, 'yy' as jo FROM myOtherTable 
     WHERE f_workgroup ='1234' AND f_status<=2) x 
ON x.f_id=cf.f_id  
WHERE cf.f_workgroup='798190' and jo='xx';

我只想得到jo='xx'所在的元素。但这不起作用。当我用jo='yy'尝试它时,我得到了一个结果,但我需要用jo='xx'。

在看到您的评论后,也许这张图片会有所帮助

如果我没说错的话,你的情况会是这样的:

SELECT f_cl_path f,cf.f_id
FROM c_files cf
LEFT JOIN (SELECT f_cl_path f, f_id, f_workgroup FROM myOtherTable 
     WHERE f_workgroup ='1234' AND f_status<=2) as x
ON x.f_id=cf.f_id  
WHERE cf.f_workgroup='798190' and x.f_id IS NULL

考虑提供适当的DDL和/或SqLFIDLE,连同所需的结果SETJO是一个别名,用于在您的子查询中具有值“yy”的常量。xx'作为jo根本不会被考虑。所以不,'xx'!='yy'YourAlises应该是不同的,因为mysql接受了最后一个jo,所以将自定义列重命名为jox和joy@MKhalidJunaid第一个即使被命名为jox也不会被考虑。别名不能在同一查询级别的where子句中使用。@Raphaël Althaus在where子句中使用此别名还有其他方法吗?