2014-06-28 111 views
0

我在我的數據庫中有2個表。一個叫做:points,另一個叫做:sample如何根據另一個表的值爲MySQL選擇一個值?

points表如下所示:

id user_id  points 
1 5   200 
2 7   400 
3 8   7000 
4 12   900 
5 23   3100 

sample表如下所示:

id points  number 
1 500  10 
2 1000  20 
3 3000  30 
4 5000  40 
5 10000  50 

我想選擇例如user_id = 12,並確定哪些number(從樣品表)屬於他的觀點。決定應基於他們的觀點。如果他們在sample表中沒有達到更高的數字,他們應該在此之前收到number

但是這對我的情況並不重要。我只想知道如何從第一個表中選擇使用示例表查找值,而在它們之間沒有預定義的表連接時?我只想根據第二個表值的某些條件從第一個表中進行選擇。

它是如何實現的?

+0

您想要的結果是什麼? –

回答

1

將獲得的價值只有1行,你可以使用MAX,由hellcode完成,或者您可以使用LIMIT

SELECT s.number 
FROM points p 
     INNER JOIN sample s ON s.`points` <= p.`points` 
WHERE user_id = 12 
ORDER BY s.number DESC 
LIMIT 1; 

得到number所有user_id你需要一個子查詢

SELECT p.user_id 
    , (SELECT s.number 
     FROM sample s 
     WHERE s.`points` <= p.`points` 
     ORDER BY s.number DESC 
     LIMIT 1) Number 
FROM points p 

SQLFiddle demo同時與查詢

如果用戶小於最小點值NULL返回

0
SELECT max(s.number) 
FROM points AS p, sample AS s 
WHERE p.user_id = 12 
AND p.points >= s.points 

也許你應該在你的樣品表中添加一個0點和0號的行來得到小於500點的結果。

相關問題