【mysql查询分组中最大的数据】或 最小的数据,把自己做成中间表实现

需求

  • 表中的 站点索引 字段,最大的 就是 终点站
  • 表中 是根据 线路ID,区分 是哪个线路的 站点的
  • 现在要把这些终点站 查询出来
  • 站点的上下行 字段,区分这个站点是 上行还是下行
    • 上下行,都有终点站。
  • 查询首发站,直接 索引为1就行。
  • 也可以把下面的SQL,改为min

查出 上下行 线路ID 的 最大索引

	SELECT
		max( t1.STATION_INDEX ) STATION_INDEX,  --最大的站
		t1.ROUTE_ID,  -- 线路ID
		t1.ROUTE_DIRECTION  -- 上下行
	FROM
		config_basic_station t1 
	GROUP BY
		t1.ROUTE_ID,  -- 线路ID
		t1.ROUTE_DIRECTION -- 上下行,这两个字段分组
  • 结果
    • 20001 上行是 16站
    • 2003 上行是 9站
16	20001	0
16	20001	1

10	20002	0
9	20002	1

使用from 多个表关联即可

SELECT
  cbs.ROUTE_ID,
	cbs.STATION_NAME,
	cbs.STATION_INDEX,
	cbs.ROUTE_DIRECTION 
FROM
	config_basic_station cbs,
	(
		SELECT
			max( t1.STATION_INDEX ) STATION_INDEX,
			t1.ROUTE_ID,
			t1.ROUTE_DIRECTION 
		FROM
			config_basic_station t1 
		GROUP BY
			t1.ROUTE_ID,
			t1.ROUTE_DIRECTION 
	) t2
WHERE
	cbs.ROUTE_ID = t2.ROUTE_ID -- 线路ID 和 最大索引 和 上下行 都要满足的 数据
	AND cbs.STATION_INDEX = t2.STATION_INDEX 
	AND cbs.ROUTE_DIRECTION = t2.ROUTE_DIRECTION
  • 10245 上行 的 终点站是 五莲路双桥路
10231	南桥汽车站	75	0
10231	德翔路新德西路	75	1
10245	通耀路耀龙路	37	0
10245	五莲路双桥路	36	1
  • 如果想知道 线路名字,关联线路表 即可。

表结构

CREATE TABLE `config_basic_station` (
  `ID` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `STATION_ID` varchar(20) DEFAULT NULL,
  `STATION_NAME` varchar(40) DEFAULT NULL,
  `ROUTE_ID` int(11) DEFAULT NULL,
  `ROUTE_DIRECTION` tinyint(1) DEFAULT NULL,
  `STATION_INDEX` int(11) DEFAULT NULL,
  `IS_TERMINAL_MOUNT` tinyint(4) DEFAULT '0',
  `TERMINAL_ID` varchar(20) DEFAULT NULL,
  `TERMINAL_ID_OLD` varchar(20) DEFAULT NULL COMMENT '库里原本的数据保存',
  `FORMAL` int(2) NOT NULL DEFAULT '1' COMMENT '1非正式数据,2正式数据。我们的逻辑',
  `PORT_INDEX` tinyint(4) DEFAULT NULL,
  `LONGITUDE` decimal(11,6) DEFAULT NULL,
  `LATITUDE` decimal(11,6) DEFAULT NULL,
  `MESSAGERECORD` varchar(100) DEFAULT NULL,
  `GRID` bigint(20) DEFAULT '0',
  `EARLYBUS` varchar(10) DEFAULT NULL COMMENT '早班车时间',
  `LASTBUS` varchar(10) DEFAULT NULL COMMENT '末班车时间',
  `INTERVALNUM` int(11) DEFAULT NULL COMMENT '灯珠间隔',
  `GREET_STATION` int(11) DEFAULT '0' COMMENT '是否为招呼站(0非招呼站,1是招呼站)',
  `PD_CODE` varchar(64) DEFAULT NULL COMMENT '上海市统一编码',
  `UNREAL_TERMINAL_ID` varchar(20) DEFAULT NULL COMMENT '虚拟设备号',
  PRIMARY KEY (`ID`) USING BTREE,
  KEY `TERMINAL_ID` (`TERMINAL_ID`) USING BTREE,
  KEY `ROUTE_ID` (`ROUTE_ID`) USING BTREE,
  KEY `STATION_ID` (`STATION_ID`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=250863 DEFAULT CHARSET=gbk ROW_FORMAT=COMPACT;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值