Mysql - 我可以获取子选择结果并在WHERE子句中使用它吗?

时间:2009-06-04 10:27:07

标签: mysql sql mysql-error-1054

我想在where子句中获取和使用从MySQL中的子选择返回的值。这可能吗?将子查询写出两次似乎是不必要的 - 但是如果我需要,那么MySQL是否足够聪明才能运行它?

我尝试了以下不起作用:

SELECT 
  (SELECT 1 FROM table WHERE somereallycomplicatedclause = 'something')
      AS subselectresult 
FROM content WHERE subselectresult = 1

这会产生此错误:

#1054 - Unknown column 'subselectresult' in 'where clause'  

由于

2 个答案:

答案 0 :(得分:2)

您不能在WHERE子句中使用列别名。试着把它放在HAVING中它应该可以工作。

此处的说明:http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

答案 1 :(得分:0)

您显示的查询很奇怪。您可以通过这种方式获得相同的结果(交叉产品):

SELECT S.One
FROM contacts,
(SELECT DISTINCT 1 as One FROM table WHERE somereallycomplicatedclause = 'something') S

我认为您应该多说一下您尝试解决的问题(例如,子查询和联系人表之间的链接是什么)?