我想对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) )
感谢。
答案 0 :(得分:2)
( SELECT * FROM t1 )
UNION
( SELECT * FROM t2
WHERE EXISTS
( SELECT * FROM t1 )
)