2014-09-01 59 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