sql排序语句问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql排序语句问题相关的知识,希望对你有一定的参考价值。

数据库表中现在有三个字段:name(string),num(int),flag(int),现在有若干条数据:
name num flag
a 10 0
b 3 0
a 2 1
c 4 0
d 5 1
b 2 1
现在需要按照相同的name所有num字段之和进行降序排列,如果之和最大,则其name num flag排在前面,且相同name的两行要连着,如下所示:
name num flag
a 10 0
a 2 1
b 3 0
b 2 1
d 5 1
c 4 0
其中a的两行num之和最大,排在第一二行,(不能将两行a分开,例如第一行是a,第二行是b,第三行是a),我写了这个sql:
select name, num, flag from table group by name, flag order by num,但这样输出就为:
name num flag
a 10 0
d 5 1
c 4 0
b 3 0
a 2 1
b 2 1
两行a被分开了,请问sql应该是什么思路来修改呢?比较着急,谢谢!
我是初学,能再介绍详细一点么?比如如何再进行排序呢?谢谢!
我已经得到
a 13
b 5
d 5
c 4
如何与原表join呢?

二楼的好像不行,提示:
错误 42X04:列“NUM”不在 FROM 列表的任何表中,或者它出现在 join 规范内但超出 join 规范的作用域,或者它出现在 HAVING 子句中但不在 GROUP BY 列表中。如果这是 CREATE 或 ALTER TABLE 语句,则“NUM”不是目标表中的列。

我写了left join的语句:
select city, num, flag from (select city, sum(num1+num2) as num, flag from ftb group by city, flag) t1 left join ftb on t1.city=ftb.city order by num;
总提示order by处有错,我的想法是让取出的
a 13
b 5
d 5
c 4这个表映射与原始表进行左连接比较,这样可以通过表映射中的排序来定义最后的排序,但还是不行啊?

二三楼兄弟的写法正确,但是与我这个sql要完成的功能不同,最后只是按照num和flag进行排序,但仍有可能出现同一个name的两行记录不相邻的情况。。。

先得到
a 13
b 5
d 5
c 4
这样的数据集,
然后再跟原来的数据集进行join, 用后得到的数据集进行排序。
参考技术A select name,num,flag from teacher
group by num,name,flag order by (num+flag ) desc

我做这样可以
不过不知道是不是这个意思
你试试
参考技术B select name, num,flag from table group by name,num,flag order by name asc,num desc

sql语句时间排序 sql语句按照时间排序

参考技术A

SQL按时间排序

select * from MyTable Order By ModifyTime Desc

按修改的时间倒序排列

如果是知道最后一次是某天,加上条件

select * from MyTable Where DateDiff(day,ModifyTime,GetDate)=0 Order By ModifyTime Desc

sql 排序,order by 按时间

sql排序是指定时间字段才能按照时间排序,asc默认升序,desc默认降序。

ORDER BY 语句

ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

比如要排序:

select date from tablename order by date desc

按date降序排列。

SQL语句怎么写?先按时间排序,再按姓名排序?

将字段依次写在order by 后面即可 , 中间用逗号隔开

select * from 表 order by time , name

select * from 表 order by time asc , name asc

select * from 表 order by time desc , name desc

select * from 表 order by time asc , name desc

select * from 表 order by time desc , name asc

(注: asc 表示升序 , desc表示降序 , 未明确写明排序方式时默认是升序 )

与之类似的语法是 group by , 按多个字段分组时 , 也是依次将多个字段写在group by 的后面 , 并用逗号隔开 , 范例如下:

select time , name , sum(*) from 表 group by time , name

怎样用SQL语句 按日期进行从高到低进行排序

用SQL语句按日期进行从高到低进行排序:select * from tmp order by time desc;

结构化查询语言(英文简称:SQL)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同 数据库系统,,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

标签:作文经典 上一篇:带苦干的词语 形容苦干的词语 下一篇:快板台词护士夸赞美 夸赞幼儿园快板台词

sql语句的根据日期排序问题!

这个问题的原因是你的time 不是datetime 应该是varchar型.

改成这个.

sql="select id,title,content,class,img,time from info order by cast(time as datetime) desc"

就行了

怎样用SQL语句 按日期进行从高到低进行排序呢~~

就是对日期进行倒排序

select * from tableName -- 假设你的表的名字是tableNameorder by dtcol desc; -- 假设你的日期字段名是 dtcol; desc表示倒排序

sql语句:请问下面这sql怎么往上加排序(降序)以时间为降序?

你这样查询出来就一个 符合你条件的记录数

没办法排序啊?

如果打算按时间排序就别查个数了。。

select refund_id,addtime from refund where refund_audit=1 and f_user_uid =\'" + userid + "\'

order by addtime desc

//按时间倒叙

sql语句怎么按照字段1排序后再在本字段内按时间排序

ORDER BY 后面可以写多个

比如

ORDER BY Gender ASC, Age DESC, Name ASC

按照性别升序排列, 性别相同的按照年龄降序排列, 年龄再相同的按照姓名升序排列

SQL语句排序的问题

升序是 ASC,降序是 DESC

select * FROM a ORDER BY 锭 ASC,n DESC

sql 日期正序 时间倒序

这个问题,因为你日期和具体时间分别在两列上,因此,是可以采用sql实现的。

SQL中增加order by语句如下:

ORDER BY 日期, 时间 DESC

如果你的这两个列有些特殊性,或者两个列没有分开,可以单独联系,我帮你解决(相对来说复杂点)

标签:作文经典 上一篇:带苦干的词语 形容苦干的词语 下一篇:快板台词护士夸赞美 夸赞幼儿园快板台词

以上是关于sql排序语句问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL之SELECT语句排序

sql语句 在分组内排序

sql语句怎么按照字段1排序后再在本字段内按时间排序?

sql语句 嵌套查询 排序

sql 排序,order by 按时间

sql ORDER BY 多个字段,排序变慢几十倍,求解?