单个查询以从具有不同列的两个表中获取数据

时间:2016-02-25 00:50:35

标签: mysql

我有两个表,eventperformer,每个表都有一个slug列。除了slug列之外,event表还有col1col2col3列,performer表中有一列名为{ {1}}。

我需要的是一个以id值作为输入的查询,并首先查看slug表。如果找到匹配项,则返回event表中的所有列。如果找不到匹配项,则会查看event表并返回performer

实质上,它相当于以下两个查询:

id

如果第一个查询中没有结果,请执行以下操作:

select col1, col2, col3 from event where slug = ?

我理解返回列的数量应该是一致的,因此select id from performer where slug = ? 的值在第一种情况下可以为null,idcol1和{{1}的值在第二种情况下可以为null。我可以测试null,看看是哪种情况。

我宁愿在查询中没有条件 - 我觉得可以用单个查询完成,但无法弄清楚如何。

1 个答案:

答案 0 :(得分:0)

您可以尝试IF EXISTS,这可以在一个查询中完成。我知道你说没有条件,但这是一个查询命令。

IF EXISTS(select col1, col2, col3 from event where slug = ?) 
BEGIN 
select col1, col2, col3 from event where slug = ?
END
ELSE 
BEGIN
select id from performer where slug = ?
END 

我希望这有帮助!