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。
答
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)
我发布了一些应该带走未知列错误的东西,但是您的IN(...),因为它是多余的(使得字段值应该位于由相同记录的字段值==重言式)。我知道这可能只是一个例子,但你想完成什么? – Unreason 2010-04-19 20:25:45
实际的查询比较复杂,所以这只是一个测试。由于查询在旧服务器上的工作状况良好,我真的只是想知道为什么我在新服务器上出现此错误...没有生成有效的(甚至是有用的)查询。为什么在一台服务器上没有错误,为什么新服务器上出现错误。 – Stuart 2010-04-19 20:47:56