Mysql 只解析连接的左侧
在下面的代码中,我希望将表c_files cf与second查询的结果连接在两个括号内,即别名xMysql 只解析连接的左侧,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.
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子句中使用此别名还有其他方法吗?