SQL高手进来通过积分查找等级

SQL高手进来通过积分查找等级,第1张

***************************

补充:

说过了,在你的积分表中增加一列等级积分上限,这个表就有用了。这样当修改你的积分表的时候,级别显示就会跟着变,就不存在写死的问题了。

***************************

你的数据库是这样,没有办法,只能用case语句一个一个找,如果你嫌麻烦,建议在【积分表】中加一个【等级积分上限】字段。

如:【2,士兵,200,499】代表积分在【200到499】之间的是【士兵】,这样sql写起来就简单多了。

select A.用户号,A.用户名,A.积分,B.等级名称 from 用户表 A,积分表 B where A.积分<=B.积分上限 and A.积分>=B.积分

这样一下就定位了,B表只有一个字段确实不好定义。

---

以上,希望对你有所帮助。

CREATE TRIGGER tri_更新会员等级

ON 会员表

AFTER UPDATE,INSERT

AS

BEGIN

    UPDATE 会员表 SET 会员等级号=(

    SELECT (CASE WHEN t1.积分>=100 AND t1.积分<500 THEN '02'

            CASE WHEN t1.积分>=500 AND t1.积分<1000 THEN '03'

            CASE WHEN t1.积分>=100 THEN '04'

            ELSE '01'

    ) AS [会员等级号]

    FROM (SELECT * FROM 会员表 WHERE 会员编号=(SELECT TOP(1) 会员编号 FROM INSERTED))AS t1

)  WHERE 会员编号=(SELECT TOP(1) 会员编号 FROM INSERTED)

END

1,安装一个数据库系统,建议mysql,简单,免费

2,在mysql中创建一个数据库

create database tanchishe

3,创建数据表

use tanchishe

create table record(

id int primary key auto_increment,

username char(20),

count int

)

4,程序中链接数据库,以java语言为例:

导入数据库链接jar包,如mysql-connector-java-5.1.6-bin.jar

加载驱动类:

Class.forName("com.jdbc.mysql.Driver")

获取链接:

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/tanchishe","数据库帐号","数据库密码")

书写sql语句:

String sql="insert into record(username,count) values(?,?)"

获取处理sql语句的对象:

PreparedStatement pstm=conn.preparedStatement(sql)

设置要插入的数据:

pstm.setString(1,玩家名称)

pstm.setInt(2,此次得分)

执行sql语句:

pstm.executeUpdata()

查询数据得到排行榜:

String sql2="select * from record order by count desc"

pstm=conn.preparedStatement(sql2)

执行查询,得到结果集:

ResultSet rs=pstm.executeQuery()

遍历rs,得到集合:

List<Record>records=new ArrayList<Record>()

while(rs.next()){

Record r=new Record()

r.setId(rs.getInt("id"))

r.setUserName(rs.getString("username"))

r.setCount(rs.getInt("count"))

records.add(r)

}

得到集合records


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

原文地址: http://outofmemory.cn/sjk/10874231.html

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

发表评论

登录后才能评论

评论列表(0条)

保存