【发布时间】:2014-01-13 19:31:24
【问题描述】:
在下面的代码中,我想将表 c_files cf 与两个括号内的第二个查询的结果(别名 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'。
【问题讨论】:
-
考虑提供适当的 DDL 和/或 sqlfiddle 以及所需的结果集
-
jo 是子查询中值为“yy”的“常量”的别名。 (
'xx' as jo根本不会被考虑)。所以不,'xx' != 'yy' -
你的别名应该不同,最后一个 jo 由 mysql 获取,因此将自定义列重命名为 jox 和 joy
-
@MKhalidJunaid 第一个即使命名为 jox 也不会被考虑。在同一“查询级别”的 where 子句中不能使用别名。
-
@Raphaël Althaus 还有其他方法可以在 where 子句中使用此别名吗?
标签: mysql sql select join left-join