2014-09-27 147 views
-1

我有一個類似下面的表。返回下一個結果

id | episode_number 

1  55 
2  56 
3  57-58 
4  59 
5  60 
6  61-62 
7  63 
8  64 
9  65-66 
10  67-68 

我的目標是,無論何時選擇特定的情節。我想返回下5個結果。比方說,如果選擇EPISODE_NUMBER 60,我想通過做下面的下面的語句返回未來5個結果是

id | episode_number 
6  61-62 
7  63 
8  64 
9  65-66 
10  67-68 

我已經實現了這一點,一切都很正常。

$query = $PDO -> prepare("SELECT * FROM table 
          WHERE `table`.episode_number > :episode 
          ORDER BY (`table`.episode_number + 0) 
          LIMIT 5"); 

$query->bindValue(':episode', 60, PDO::PARAM_INT); 

但是,如果選擇的劇集不是INT,但實際上是STR?如61-62,我將如何返回它的下一個5結果?

+0

你的意思'61-62'本身計數2號?所以我們只需要獲得更多3(而不是4)? – 2014-09-27 19:33:50

回答

0

如果我正確地理解了這個問題,當你有一個字符串的時候,你會在「下一個」列表中獲得該值,而不是「下一個」值。如果是這樣的問題,這裏有兩種方法來解決這個問題:

SELECT * 
FROM table 
WHERE `table`.episode_number + 0 > :episode 
ORDER BY (`table`.episode_number + 0) 
LIMIT 5; 

或:

SELECT * 
FROM table 
WHERE `table`.episode_number >= :episode 
ORDER BY (`table`.episode_number + 0) 
LIMIT 5 OFFSET 1; 
+0

不,讓我說我把'table'.episode_number> 55,這將工作得很好。但是如果我把'table'.episode_number> 61-62。它不會返回期望的結果。由於61-62實際上並不是一個有效的數字,而是一個字符串,而不像55. – 2014-09-27 19:37:49

+0

@KuwameBrown。 。 。它怎麼不起作用?用你得到的結果和實際結果編輯你的問題。數據庫將在不同類型之間進行轉換。 – 2014-09-27 19:47:00

+0

61-62不是INT,因此數據庫會以某種方式將其視爲6.並且在第6集後獲得下一個5個結果.DASH是造成差異的原因。 – 2014-09-27 19:50:17