什么MySQL查询将为我提供booking_id=1的所有行,但省略第一行和最后一行?
这可以通过查看sequence列来确定,0始终是第一行,但最后一行不同--在本例中是4,但可以是2、3、6等等.
我已经在SQLFiddle中构建了一个示例模式
代码:
CREATE TABLE waypoint
(
id int auto_increment primary key,
booking_id varchar(11),
sequence varchar(11),
address varchar(300)
);
INSERT INTO waypoint
(booking_id, sequence, address)
VALUES
('1', '0', 'MK9 1AN,Santander,Santander Uk Plc,Santander House,201,Grafton Gate East'),
('1', '1', 'MK13 0DD,4,Glyn Street,New Bradwell,Milton Keynes,'),
('1', '2', 'MK6 2DU,65,Towan Avenue,Fishermead,Milton Keynes,'),
('1', '3', 'MK1 1LG,10a,Clarke Road,Bletchley,Milton Keynes,'),
('1', '4', 'MK11 1BJ,3,York Road,Stony Stratford,Milton Keynes');发布于 2015-02-12 08:48:10
这是返回所需结果的查询:
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";此查询从使用ID的路径点计算mimimum和最大booking_id="1"。然后,这些id被排除在结果集之外(NOT IN子句)
发布于 2015-02-11 14:08:38
使用最小函数和最大函数。FIDDLER演示
SELECT * FROM waypoint
WHERE ID NOT IN(
(SELECT MIN(ID) FROM waypoint),
(SELECT MAX(ID) FROM waypoint)
)https://stackoverflow.com/questions/28456334
复制相似问题