2

我想在 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'  

谢谢

4

2 回答 2

2

您不能在 WHERE 子句中使用列别名。尝试将其放入 HAVING 中,然后它应该可以工作。

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

于 2009-06-04T10:30:49.280 回答
0

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

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

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

于 2009-06-04T10:35:21.643 回答