MySQL 多表查询,内连接,外连接,联合查询

#多表链接(隐式内连接)
SELECT user_name,gname,score
FROM users,game,score
WHERE users.`user_qq`= score.`user_qq`
AND game.`gon`= score.`gon`
#内连接 如果没有对应的信息 则不显示
/*语法:
select 列名 from 表1 inner join 表2
on 表1.列名= 表2.列名 
inner join 表3
on 表3.列名 = 表2.列名(列名:类型、属性相等)
*/

SELECT user_name AS '玩家昵称',gname AS '游戏名称',score AS '分数'
FROM users INNER JOIN score
ON users.`user_qq`= score.`user_qq`
INNER JOIN game
ON game.`gon`= score.`gon`

#查询每个玩家的昵称、总分和平均分
SELECT user_name AS '昵称',SUM(score) AS '总分',AVG(score) AS '平均分'
FROM users INNER JOIN score
ON users.`user_qq` = score.`user_qq`
GROUP BY users.`user_qq`,users.user_name
#查询平均分数大于3500的分数信息,显示玩家昵称,总分数、平均数,并按照降序排列
SELECT user_name AS '名字',SUM(score) AS '总分',AVG(score) AS '平均分'
FROM users INNER JOIN score
ON users.`user_qq`= score.`user_qq`
GROUP BY users.`user_qq` 
HAVING AVG(score)>8700
ORDER BY AVG(score) DESC

#外连接 保证基础表内容全部出现
/*语法:
select 列名1,列名2 from 表1 left join 表2 
on 表1.列名 = 表2.列名 (列名:类型、属性相等)
*/
#查询所有玩家关于5号游戏的分数信息
SELECT user_name,score,gon
FROM users LEFT JOIN score
ON users.`user_qq` = score.`user_qq`
AND gon = 5

#子查询 in 、not in
#没有参加
SELECT u.user_qq,u.user_name,s.gon FROM users u ,score s
WHERE u.user_qq 
NOT IN(SELECT user_qq FROM score  WHERE gon = 5)

#联合查询  纵向拼接查询数据  
#语法:查询1 union all 查询2 union all 查询3....

#查询qq号是“11103”的玩家所有分数并计算出总分、平均分数,并显示到同一结果集中
SELECT * FROM score WHERE user_qq = 11101
UNION ALL
SELECT '总分',' ',SUM(score),' ' FROM score WHERE user_qq = 11101
UNION ALL
SELECT '平均分',' ',AVG(score),' ' FROM score WHERE user_qq = 11101

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值