用Group by后。排序会从小到大排了。原先的顺序都变了。用distinct也一样。有没方法Group by 后保持原先的排序?
解决方案 »
- 我向数据库中插入时间 2012-4-10 为什么到数据库里显示1982
- 主表3W,子表5W条,查询效率太低了
- 真诚求教:往表随机插入一个"集合"中的某个字符串+MySQL
- 用wamp安装后,不知道mysql的默认密码是什么,请各位高手解救
- 请问mysql4.0怎么升级为5.1版本呢?
- 请教关于mysql中xml文件的上传!
- 高手来看看,下面MSSQL语句,怎么用MYSQL实现!
- 请教mysql的数据备份怎么做!用程序作语句怎么写,我写的SQL语句怎么不对,请大家帮我看看,谢谢了!!!
- access升级为mysql的步骤,请高手随便瞅瞅,高分相送!
- 我有一个中文查询的问题.转码后也不行
- ado.net数据库访问问题,求解答!
- 关于mssql迁到mysql时,空值(''值)导入mysql有问题
group by没顺序的,order by 吧
from tb
group by xxx
order by xxx
CREATE TABLE IF NOT EXISTS `test` (
`a` int(11) NOT NULL,
`b` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `test` (`a`, `b`) VALUES
(1, 2),
(3, 2),
(2, 2),
(8, 2),
(6, 1),
(7, 2),
(11, 1),
(23, 1),
(78, 0),
(16, 3);
SELECT * FROM `test` GROUP BY B
后怎么保持原先的`a`字段的排序。不要打乱了。
不是标准的SQL语句,你要达到什么目的,贴出来看看
但b列有重复的。要去掉重复的。以最先的行为准。像3楼。我想得到的数据是(1, 2)
(6, 1)
(78, 0)
(16, 3)
现有表结构
CREATE TABLE IF NOT EXISTS `test` (
`a` int(11) NOT NULL,
`b` int(11) NOT NULL
)无法实现这种排序功能。
SELECT * FROM TEST A WHERE NOT EXISTS (SELECT 1 FROM TEST WHERE A.B = B AND A.ID > ID)
OR
将2、1、0、3存入表中(LSB,字段ID自增),与GROUP后的结果连接,按ID排序
你这个原先的排序具体指的是什么?直接 SELECT * FROM `test`
把group by和 order by 都去掉不就是了。
这数据是查询一sql得出的。
SELECT * , COUNT(obj_id) AS obj_id_sum , SUM( sl_percentage ) AS sl_percentage_sum, SUM( sl_density ) AS sl_density_sum FROM search_list WHERE sw_id IN ('284701','284696','138528','211201','131676') AND sl_type IN ( 1, 2 ) GROUP BY obj_id, sl_type ORDER BY sl_type ASC, obj_id_sum DESC , sl_percentage_sum DESC , sl_density_sum DESC
现在得到这下面的结果后我想排除掉objc_id重复的。但得以最上行为准且顺序不要变。
行不行的?
sl_id obj_id objc_id sw_id sl_percentage sl_density sl_type obj_id_sum sl_percentage_sum sl_density_sum
--------------------------------------------------------------------------------------
298 13 1224 131676 12.50 0.00 1 2 37.50 0.00
306 6 1069 138528 12.50 0.00 1 2 29.17 0.00
239 11 1224 211201 11.11 0.00 1 2 22.22 0.00
58 4 74 131676 4.00 0.00 1 2 8.00 0.00
4 1 1224 211201 57.14 0.00 1 1 57.14 0.00
100 7 1224 211201 25.00 0.00 1 1 25.00 0.00
266 12 1224 284696 12.50 0.00 1 1 12.50 0.00
166 9 1224 211201 11.11 0.00 1 1 11.11 0.00
114 8 1224 138528 11.11 0.00 1 1 11.11 0.00
307 14 1224 284696 7.69 0.00 1 1 7.69 0.00
78 5 1224 211201 5.56 0.00 1 1 5.56 0.00
253 11 1224 211201 10.71 0.00 2 2 21.42 0.00
334 14 1224 211201 5.00 0.00 2 2 7.86 0.00
129 8 1224 138528 1.39 0.00 2 2 5.56 0.00
204 10 1224 211201 2.33 0.00 2 2 4.66 0.00
170 9 1224 211201 13.89 0.00 2 1 13.89 0.00
276 12 1224 211201 5.00 0.00 2 1 5.00 0.00
+-------+--------+---------+--------+---------------+------------+---------+------------+-------------------+----------------+
| sl_id | obj_id | objc_id | sw_id | sl_percentage | sl_density | sl_type | obj_id_sum | sl_percentage_sum | sl_density_sum |
+-------+--------+---------+--------+---------------+------------+---------+------------+-------------------+----------------+
| 298 | 13 | 1224 | 131676 | 12.50 | 0.00 | 1 | 2 | 37.50 | 0.00 |
| 306 | 6 | 1069 | 138528 | 12.50 | 0.00 | 1 | 2 | 29.17 | 0.00 |
| 239 | 11 | 1224 | 211201 | 11.11 | 0.00 | 1 | 2 | 22.22 | 0.00 |
| 58 | 4 | 74 | 131676 | 4.00 | 0.00 | 1 | 2 | 8.00 | 0.00 |
| 4 | 1 | 1224 | 211201 | 57.14 | 0.00 | 1 | 1 | 57.14 | 0.00 |
| 100 | 7 | 1224 | 211201 | 25.00 | 0.00 | 1 | 1 | 25.00 | 0.00 |
| 266 | 12 | 1224 | 284696 | 12.50 | 0.00 | 1 | 1 | 12.50 | 0.00 |
| 166 | 9 | 1224 | 211201 | 11.11 | 0.00 | 1 | 1 | 11.11 | 0.00 |
| 114 | 8 | 1224 | 138528 | 11.11 | 0.00 | 1 | 1 | 11.11 | 0.00 |
| 307 | 14 | 1224 | 284696 | 7.69 | 0.00 | 1 | 1 | 7.69 | 0.00 |
| 78 | 5 | 1224 | 211201 | 5.56 | 0.00 | 1 | 1 | 5.56 | 0.00 |
| 253 | 11 | 1224 | 211201 | 10.71 | 0.00 | 2 | 2 | 21.42 | 0.00 |
| 334 | 14 | 1224 | 211201 | 5.00 | 0.00 | 2 | 2 | 7.86 | 0.00 |
| 129 | 8 | 1224 | 138528 | 1.39 | 0.00 | 2 | 2 | 5.56 | 0.00 |
| 204 | 10 | 1224 | 211201 | 2.33 | 0.00 | 2 | 2 | 4.66 | 0.00 |
| 170 | 9 | 1224 | 211201 | 13.89 | 0.00 | 2 | 1 | 13.89 | 0.00 |
| 276 | 12 | 1224 | 211201 | 5.00 | 0.00 | 2 | 1 | 5.00 | 0.00 |
+-------+--------+---------+--------+---------------+------------+---------+------------+-------------------+----------------+
17 rows in set (0.00 sec)
from (
select *
from table1
group by obj_id
) t
order by sl_type ASC, obj_id_sum DESC , sl_percentage_sum DESC , sl_density_sum DESC
但这样达不到要求。因为第一次obj_id GROUP BY后sl_type会合并了。排序不对了。
from (
select *
from (select * from table1 order by sl_type ASC, obj_id_sum DESC , sl_percentage_sum DESC , sl_density_sum DESC) v
group by obj_id
) t
order by sl_type ASC, obj_id_sum DESC , sl_percentage_sum DESC , sl_density_sum DESC