2015-02-12 79 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