从mysql表中检索值

时间:2012-10-25 09:07:37

标签: mysql sql

我有表a和b,每个都有一个平均字段。数据一次只插入其中一个表中,因此任何一个平均字段在一个给定时间可以保持为空。如何检索两个表中非空的任一字段中的值

Table a
id  average labref
1   325      123

Table b
id  average labref
2    null    123

如果表a是具有平均值的那个,我选择该值,如果下一次表b是具有平均值的a并且表1是average是null,则我选择表a的值。它们都使用相同的id,称为labref!

5 个答案:

答案 0 :(得分:0)

select average from (
select average from tablea
union
select average from tableb) a

where average is not null

OR

select CASE WHEN a.average is null then b.average else a.average end average from tablea a inner join table b 
on a.labref=b.labref

答案 1 :(得分:0)

SELECT 
    IF(a.average IS NULL, b.average, a.average) AS average 
FROM 
    a, b 
where a.id = b.id

答案 2 :(得分:0)

尝试:

select labref, max(average) from
(select labref, average from a union all 
 select labref, average from b) ab
group by labref

答案 3 :(得分:-1)

您可以通过以下方式使用IFNOTNULL()函数:

select IFNOTNULL(average,(select average from b)) from a 

我没有对此进行过测试,而且我已经脱颖而出了。

答案 4 :(得分:-1)

你可以试试这个

select average from a, b where a.average IS NOT NULL and b.average IS NOT NULL

我不确定是否会使用IS NOT NULL两次。