Sql 在雪花中使用if条件

Sql 在雪花中使用if条件,sql,snowflake-cloud-data-platform,Sql,Snowflake Cloud Data Platform,我有两个表,如下所示,各列如下: Table A a, b, c, id Table B d, e, f, g, h, id 现在我需要执行一个查询,基本上我会从用户那里得到一个id,所以我需要检查该id是否存在于表a或表B中。所以记录将存在于任何一个表中 SELECT * FROM tableA WHERE id = 123 OR SELECT * FROM tableB WHERE id = 123 因此,响应将是表A的列或表B的列。但是我不能执行并集,因为两个表中的列应该相

我有两个表,如下所示,各列如下:

Table A
a, b, c, id 

Table B 
d, e, f, g, h, id 
现在我需要执行一个查询,基本上我会从用户那里得到一个id,所以我需要检查该id是否存在于表a或表B中。所以记录将存在于任何一个表中

SELECT * FROM tableA WHERE id = 123 
OR 
SELECT * FROM tableB WHERE id = 123
因此,响应将是表A的列或表B的列。但是我不能执行并集,因为两个表中的列应该相等

所以这基本上是一个if条件,我怎样才能在雪花中得到期望的输出


使用if是最佳的优化方法,或者任何其他方法都可以

您可以使用
union all
——假设类型是兼容的。只需垫上较小的桌子:

select a, b, c, null as g, null as h, id 
from a
where id = 123
union all
select d, e, f, g, h, id 
from b
where id = 123;
如果要分隔列,则通过
完全联接
完成以下操作:

select *
from a full join
     b
     using (id)
where a.id = 123 or b.id = 123;

SQL查询必须返回一组固定的列。如果希望从找到id的表中找到所有列,则不能在单个查询中执行此操作。但是如果我给出select*,这意味着它应该返回所有的isn'tyes
select*
意味着所有列。因此我的评论。我记得
postgreql
标记,因为雪花与Postgres是完全不同的DBMS产品。@GMB我不太清楚,你能解释一下我该如何处理这个问题吗?因为我是DBQL的初学者,但是完全连接需要太多时间,一个表有46列,一个表有34列。@DILEEPTHOMAS。我不知道
完全联接的性能与基础表中的列数直接相关。