select value1 as value from T1 where id=10;
如果id
中不存在T1
- 执行另一个查询:
select value2 as value from T2 where id=10;
因此,我想加入这些查询并返回单个值(value1
或value2
)。有可能吗?
SOLUTION:
我的解决方案:
select ifnull(value1, value2) as value from T1 left join T2 using(id) where id=10;
答案 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