欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从不充值的玩家 SQL查询

程序员文章站 2022-07-07 10:34:28
...

从不充值的玩家

从不充值的玩家 是 LintCode(见 LintCode介绍) 提供的一道入门级数据库面试题,接下来对其进行简单分析。

描述

某游戏数据库包含两个表,用户 (users) 表和充值 (recharges) 表,编写一个 SQL 查询,找出所有从未充值的玩家。

1: users (用户表)

列名 类型 注释
id int unsigned 主键
name varchar 用户姓名

2: recharges (充值表)

列名 类型 注释
id int unsigned 主键
user_id int 用户id

样例

从不充值的玩家 SQL查询

最快的代码

按照SQL5.7的写法,LintCode用户所给出最快的代码示例如下:

SELECT a.player_name AS player
FROM player AS a
    LEFT JOIN vip8 AS b
	ON a.id = b.vip8_id
WHERE b.vip8_id is NULL;

接下来简单分析一下:

首先是SQL的SELECT语句。
SELECT 语句用于从表中选取数据。选择结果被存储在一个结果表中(称为结果集)。最后的WHERE 则规定了SELECT选取对象的标准。

第二行的FROM声明了选取数据的来源是player表。

代码中出现的3个AS就是重命名,也就是别名,比如在第二行声明把player重命名为a,那么在第四、五行中就使用 a 来代替 player 从而简化了人为输入。

之后的LEFT JOIN 关键字会从左表 (player) 那里返回所有的行,即使在右表 (vip8) 中没有匹配的行。ON表示操作针对目标(个人理解)。

那么综上所述,该程序的大致逻辑就是在player表中根据用户id选择出在vip8表中没有记录的玩家(即没有充值的玩家)。整个程序也是简单易懂,易于操作执行。

点关注 ~ 不迷路 ~ 持续更新 ~

相关标签: sql 数据库