如果第一部分为null或其他结果,则复合MySQL查询返回null

时间:2011-11-03 17:35:48

标签: mysql

我想对MySQL进行复合查询。如果union的第一部分为null,我想返回null;否则,我想返回联盟的结果。例如:

IF( select * (select * from t1) as result, result UNION (select * from t2), "");

我的代码行无效。我收到以下错误:

Operand should contain 14 column(s)

有没有人有任何想法如何做到这一点?

感谢下面的第一个回复,但它看起来太贵了:

(SELECT * FROM t1) 
UNION 
( SELECT * FROM t2 
WHERE EXISTS
    ( SELECT * FROM t1 )
)

我的理由是t1实际上是一堆UNIONed语句本身。有没有办法使用类似别名的东西?下面的示例失败,因为别名“result”未在UNION关键字中传输。

SELECT * FROM(大型复合选择语句)AS结果 联盟 (SELECT * FROM t2   在哪里存在         (SELECT 1 FROM results) )

感谢。

1 个答案:

答案 0 :(得分:2)

( SELECT * FROM t1 )
UNION 
( SELECT * FROM t2 
  WHERE EXISTS
        ( SELECT * FROM t1 )
)