网站里关于手动排序 java ,mysql

网站里关于手动排序 java ,mysql,第1张

呵呵 这里给你个我的思路 仅供参考。

设置一个顺序列,可以手动赋值的 建议用整形数值

查询的时候 除了根据Id 进行排序外 对顺序列进行分组 排序,这样应该能解决你说的需求。

这个用limit应该查不出吧

楼主提问的举例, TOP 1 WITH TIES查询结果应该不是A和D.如果存款顺序排,结果是E如果按存款倒序排,结果是B和C.

楼主可以这样试试:

A B C D E,存款分别为100 200 200 100 50

CREATE TABLE a (id VARCHAR(1),number INT)

INSERT INTO a VALUES ('A',100),('B',200),('C',200),('D',100),('E',50)

SELECT * FROM a ORDER BY number DESC

idnumber

B200

C200

A100

D100

E50

SELECT

tmp.id,tmp.number,@rownum := @rownum+1,

IF (

@p <>tmp.number, @rank := @rank + 1, @rank := @rank ) AS rank

, @p := tmp.number

FROM

(SELECT id,number FROM a ORDER BY number DESC) tmp,

(SELECT @rownum :=0 , @p :=NULL, @rank :=1) a

idnumber@rownum := @rownum+1rank@p := tmp.number

B2001 1 200

C2002 1200

A1003 2100

D1004 2100

E505350

要取存款是200的直接外面套一层 rank<=1就行了

没有系统学习过mysql,今日想查询前n条记录,习惯性的输入sqlserver的selecttop n的形式语句,报错,一查,原来mysql通过limit可以实现相关功能,而且功能更加强大,GOOD。以下是limit在mysql中的使用详解:语法:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offsetLIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。mysql>SELECT * FROM table LIMIT 5,10// 检索记录行 6-15 ,注意,10为偏移量//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:mysql>SELECT * FROM table LIMIT 95,-1// 检索记录行 96-last.//如果只给定一个参数,它表示返回最大的记录行数目:mysql>SELECT * FROM table LIMIT 5//检索前 5 个记录行 //也就是说,LIMIT n 等价于 LIMIT 0,n。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8728908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存