27,579
社区成员
发帖
与我相关
我的任务
分享
表 A
player_id 战斗力
1 100
2 98
3 100
表 B
player_id 荣誉
1 32
2 91
3 12
给玩家player_id 获取对应玩家排名,如果战斗力一样,查看荣誉,荣誉高的拍在前面。请问SQL语句怎么写,所以玩家 1 拍第一名 玩家 3排名 第二 玩家2排名第三
--表A
IF(OBJECT_ID('A') IS NOT NULL) DROP TABLE A
CREATE TABLE A (player_id INT,zhandouli INT)
INSERT INTO A
SELECT 1,100 UNION ALL
SELECT 2,98 UNION ALL
SELECT 3,100
--表B
IF(OBJECT_ID('B') IS NOT NULL) DROP TABLE B
CREATE TABLE B (player_id INT,rongyu INT)
INSERT INTO B
SELECT 1,32 UNION ALL
SELECT 2,91 UNION ALL
SELECT 3,12
select ID=rank() over(order by zhandouli desc,rongyu desc),a.player_id
from A join B on a.player_id = b.player_id
--表A
IF(OBJECT_ID('TA') IS NOT NULL) DROP TABLE TA
CREATE TABLE TA (player_id INT,zhandouli INT)
INSERT INTO TA
SELECT 1,100 UNION ALL
SELECT 2,98 UNION ALL
SELECT 3,100
--表B
IF(OBJECT_ID('TB') IS NOT NULL) DROP TABLE TB
CREATE TABLE TB (player_id INT,rongyu INT)
INSERT INTO TB
SELECT 1,32 UNION ALL
SELECT 2,91 UNION ALL
SELECT 3,12
--结果集
SELECT ROW_NUMBER() OVER (ORDER BY TA.zhandouli DESC,TB.rongyu DESC) AS ID,TA.player_id
FROM TA JOIN TB ON (TA.player_id=TB.player_id)
/*
ID player_id
-------------------- -----------
1 1
2 3
3 2
(3 行受影响)
*/
--表A
IF(OBJECT_ID('A') IS NOT NULL) DROP TABLE A
CREATE TABLE A (player_id INT,zhandouli INT)
INSERT INTO A
SELECT 1,100 UNION ALL
SELECT 2,98 UNION ALL
SELECT 3,100
--表B
IF(OBJECT_ID('B') IS NOT NULL) DROP TABLE B
CREATE TABLE B (player_id INT,rongyu INT)
INSERT INTO B
SELECT 1,32 UNION ALL
SELECT 2,91 UNION ALL
SELECT 3,12
select ID=ROW_NUMBER() over(order by zhandouli desc,rongyu desc),a.player_id
from A join B on a.player_id = b.player_id