合并两个查询并返回其中一个可能的值

时间:2012-02-23 06:26:07

标签: mysql sql

select value1 as value from T1 where id=10;

如果id中不存在T1 - 执行另一个查询:

select value2 as value from T2 where id=10;

因此,我想加入这些查询并返回单个值(value1value2)。有可能吗?

SOLUTION:

我的解决方案:

select ifnull(value1, value2) as value from T1 left join T2 using(id) where id=10;

5 个答案:

答案 0 :(得分:3)

您可以使用union

加入查询
select value1 as value from T1 where id=10 
union 
select value2 as value from T2 where id=10;

因此您可以获得任何一个值或两者

答案 1 :(得分:2)

尝试(测试)

SELECT COALESCE(t1.value1, t2.value2) AS Value FROM t1
INNER JOIN t2 USING(id)
WHERE id=10

这将始终首先检查表格t1 id = 10 ,如果没有值,则查看 table t2 获取相同的ID

引用FROM

  

定义了替换两个公共列的单个结果列   使用合并操作。也就是说,对于两个t1.a和t2.a   得到的单个连接列a定义为a = COALESCE(t1.a,t2.a)

答案 2 :(得分:1)

您可以在id字段上加入这两个查询,然后使用COALESCE函数将两个结果字段合并到输出中。

但是,假设您已经有一个要加入的ID列表。否则你就会陷入联盟或完全加入以获得这样的列表。

答案 3 :(得分:1)

你也可以使用它

select Distinct(s1.id) from sample1 as s1 inner join sample2 as s2;

答案 4 :(得分:0)

使用两者的union

如下所示:

select t1.id from table1 as t1  where id=10
union 
select t2.id from table2 as t2  where id=10