mysql 数据库一个排名问题,比较复杂
发布网友
发布时间:2022-04-11 10:18
我来回答
共1个回答
热心网友
时间:2022-04-11 11:47
你的数据库设计不合理,当你有新的game的时候又新建一张表,这样程序会变得非常复杂,正确的方法应该是只建立一个game表,字段有ID,GID,UID,money,其中GID为游戏的编码(1、2、3、……),如果是这样表结构,SQL你自己已经会写了。
对于你现在这样麻烦的数据库结构,可以利用视图来实现,建立一个视图:
CREATE VIEW game AS
select '1' GID,UID,money from game1 UNION
select '2' GID,UID,money from game2 UNION
select '3' GID,UID,money from game3
这样,你需要统计某用户UID=uid的money总和,可以使用下面的SQL:
SELECT SUM(money) FROM game WHERE UID='uid'
你需要统计某用户sname的money总和,可以使用下面的SQL:
SELECT SUM(money) FROM game WHERE UID IN (select UID from user WHERE sname='sname')
有了这个VIEW排名的SQL应该你知道怎么做了。