2014-09-01 60 views
1

您好,我有两个表称为表ab并具有以下数据合并两个结果没有关系设置

a包含数据

ID Value Score 
1 99.90 100 
2 98.60 200 
3 97.05 300 
4 95.06 400 
5 94.01 500 

b包含以下数据

ID Value 
1 96 
2 95 

而我想结果为表和这里B.value取决于a.value。例如,如果b.value96那么我想的97.05值意味着我要等于或nerest对应更高的价值形成

样本输出

b.value a.value 
96  97.05 
95  95.05 
+2

你不解释*为什么*'97.05'应该从'a'返回,如果你的'b'表中有'96'。 – 2014-09-01 05:39:34

+0

我想要相应的等值或最低值 – 2014-09-01 05:42:30

+0

好吧,那么为什么要为'95'返回'97.05'? '95.06'接近*到'96',然后'97.05'。 – 2014-09-01 05:43:53

回答

2

如果IM理解你正确,这将做你想做的。

SELECT MIN(a.value), b.value 
FROM tablea a 
JOIN tableb b ON a.value > b.value 
GROUP BY b.value 

DEMO1

编辑:

包括其他列,如分数,你必须这样做,像这样:

SELECT a_val, a.score, b_val 
FROM(
    SELECT MIN(a.value) as a_val, b.value as b_val 
    FROM tablea a 
    JOIN tableb b ON a.value > b.value 
    GROUP BY b.value 
) t 
JOIN tablea a ON a.value = t.a_val 

DEMO2

+0

非常感谢我有这个加入,但不通过 – 2014-09-01 05:58:05

+1

@ManishaPatel你需要组合一些东西,以便不显示只有一行..聚合MIN()将使它只显示一行..如果你分组b.value这将是一个b值和该b值的下一个最大的值,再看看我张贴演示:) – 2014-09-01 05:59:42

+0

是的,我得到了感谢清除我的困惑 – 2014-09-01 06:01:06