2015-02-12 93 views

回答

1

您有7行。其ID的距離。如果你想跳過第一個和最後與booking_id=1 1至7你012​​條款篩選出1和7你應該將這個子句添加到子查詢:

SELECT * FROM waypoint 
WHERE id NOT IN(
     (SELECT MIN(ID) FROM waypoint where booking_id="1"), 
     (SELECT MAX(ID) FROM waypoint where booking_id="1") 
    ) 
AND booking_id="1"; 
0

你需要複製你的第二部分您的where子句放入您的not in子句的選擇中,因爲每個select都是爲其自己處理的,並且可以訪問整個數據集。所以您需要將限制邏輯添加到每個select。否則,你的MAX(ID)將返回7,因爲它可以訪問整個數據集:

SELECT * FROM waypoint 
WHERE id NOT IN(
     (SELECT MIN(ID) FROM waypoint where booking_id="1"), 
     (SELECT MAX(ID) FROM waypoint where booking_id="1") 
    ) 
AND booking_id="1"; 
0

我不知道,如果它的工作原理,我不能在這裏測試它的那一刻,但你嘗試過

SELECT * FROM waypoint WHERE booking_id="1" ORDER BY ID LIMIT 2,COUNT(ID) 

這可能更多的穿孔,因爲你不需要兩個subselects。

+0

不錯的想法,但你不能那樣做 – Strawberry 2015-02-12 08:47:09