0

我在 MySQL 中有几个表,我向他们提出了请求。在这个请求中,我提出了一个子请求,因为我在表 t1 中有字段 f1,它有时为 NULL,有时为 NOT NULL,如果它不是 NULL,我想从表 t1 中选择字段 f2,并在 f1 为 NULL 时忽略它. 两个表中都存在字段 f1,它在 t2 中是唯一的,在 t1 中可能不是唯一的。

我提出了以下子请求:

//[main request here]
IF (t1.f1 IS NOT NULL, (SELECT t2.f1 AND t2.f2 FROM t1, t2 WHERE t1.f1 = t2.f1),'')
//[main request continues here]

MySQL 说:Invalid query: Subquery returns more than 1 row

我知道我必须以某种方式在子请求中包含 ANY,我尝试了不同的方法,但仍然遇到相同的错误或拼写错误。可以请任何人帮助我吗?

4

1 回答 1

0

问题是您的子选择正在连接 t1 和 t2,因此它没有返回唯一的行,因为 t1 有多个匹配的行。尝试:

IF (t1.f1 IS NOT NULL, (SELECT t2.f1 AND t2.f2 FROM t2 WHERE t1.f1 = t2.f1),'')
于 2012-08-01T12:02:59.103 回答