MySQL - 在子查询中使用WHERE子句中的别名

问题描述:

我有一种感觉,我完全知道这个MySQL查询,但我仍然会问。我很奇怪,为什么我得到警告Unknown column 'FOO', and how I can get this query to work properly, in 'where clause'当我运行以下命令:MySQL - 在子查询中使用WHERE子句中的别名

SELECT sample_id AS FOO 
FROM tbl_test 
WHERE sample_id = 521 
     AND sample_id IN (SELECT sample_id 
         FROM tbl_test 
         WHERE sample_id = FOO 
         GROUP BY sample_id) 

编辑此查询工作正常在不同的服务器上,并作为新的服务器上上述失败。旧版本是v 5.0.45,新版本是5.0.75。

+0

我发布了一些应该带走未知列错误的东西,但是您的IN(...),因为它是多余的(使得字段值应该位于由相同记录的字段值==重言式)。我知道这可能只是一个例子,但你想完成什么? – Unreason 2010-04-19 20:25:45

+0

实际的查询比较复杂,所以这只是一个测试。由于查询在旧服务器上的工作状况良好,我真的只是想知道为什么我在新服务器上出现此错误...没有生成有效的(甚至是有用的)查询。为什么在一台服务器上没有错误,为什么新服务器上出现错误。 – Stuart 2010-04-19 20:47:56

SELECT sample_id 
FROM tbl_test outter 
WHERE sample_id = 521 
     AND sample_id IN (SELECT sample_id 
         FROM tbl_test 
         WHERE sample_id = outter.sample_id 
         GROUP BY sample_id) 
+0

这给了我: 'where clause'中的未知列'outter.FOO' – Stuart 2010-04-19 20:26:13

+0

对不起,越来越累。编辑到位。 – Unreason 2010-04-19 20:48:33

+0

宾果......这样做。谢谢,去睡一觉。 – Stuart 2010-04-19 20:52:19