cocoa mysql_基本MySQL查询
您可以在以下网址尝试查询
http://sqlfiddle.com/#!9/839d2/1
查询1
有队长的所有行星的列表.它显示id_planet,planet_name,每个行星上的总机长以及在那里进行的战斗次数(如果有).
SELECT DISTINCT aa.id_planet, aa.planet_name, _aa.captains_count, _bb.battles_count
FROM planet AS aa
INNER JOIN soldier AS bb
ON aa.id_planet = bb.planet_id
INNER JOIN (
SELECT planet_id, COUNT(*) AS captains_count
FROM soldier
WHERE rank = 'captain'
GROUP BY planet_id
) AS _aa
ON aa.id_planet = _aa.planet_id
LEFT JOIN (
SELECT id_planet_battle, COUNT(*) AS battles_count
FROM battle
GROUP BY id_planet_battle
) AS _bb
ON aa.id_planet = _bb.id_planet_battle
WHERE bb.rank = 'captain';
您可以使用以下方法获得相同的结果:
SELECT DISTINCT aa.id_planet, aa.planet_name,
(
SELECT COUNT(*)
FROM soldier AS _aa
WHERE _aa.rank = 'captain' AND aa.id_planet = _aa.planet_id
GROUP BY _aa.planet_id
) AS captains_count,
(
SELECT COUNT(*)
FROM battle AS _bb
WHERE aa.id_planet = _bb.id_planet_battle
GROUP BY _bb.id_planet_battle
) AS battles_count
FROM planet AS aa
INNER JOIN soldier AS bb
ON aa.id_planet = bb.planet_id
WHERE bb.rank = 'captain';
查询3
SELECT aa.name, aa.rank, bb.planet_name AS planet_from, (
SELECT COUNT(*)
FROM soldier AS _aa
WHERE _aa.planet_id = aa.planet_id
) AS number_of_soldiers,
(
SELECT COUNT(*)
FROM battle AS _bb
WHERE _bb.id_planet_battle = aa.planet_id
) AS number_of_battles
FROM soldier AS aa
INNER JOIN planet AS bb
ON aa.planet_id = bb.id_planet;
在这里,我没有像查询1.1那样使用Joins来计算number_of_soldiers和number_of_battles,因为那将是一个相关的子查询,因此它无法访问外部查询(https://dev.mysql.com/doc/refman/5.5/en/from-clause-subqueries.html).
错误的查询:
SELECT DISTINCT aa.id_planet, aa.planet_name, _aa.captains_count, _bb.battles_count
FROM planet AS aa
INNER JOIN soldier AS bb
ON aa.id_planet = bb.planet_id
INNER JOIN (
SELECT COUNT(*) AS captains_count
FROM soldier AS _aa
WHERE _aa.rank = 'captain' AND aa.id_planet = _aa.planet_id
GROUP BY _aa.planet_id
) AS _aa
ON aa.id_planet = _aa.planet_id
LEFT JOIN (
SELECT COUNT(*) AS battles_count
FROM battle AS _bb
WHERE aa.id_planet = _bb.id_planet_battle
GROUP BY _bb.id_planet_battle
) AS _bb
ON aa.id_planet = _bb.id_planet_battle
WHERE bb.rank = 'captain';
因此,上面的查询是错误的,并产生错误:’where子句’中的未知列’aa.id_planet’.
至于您要求的第二个查询,我希望其他人可以尝试一下.
cocoa mysql_基本MySQL查询相关推荐
- 每小时的数据mysql_荐 mysql查询每小时数据和上小时数据的差值
一.前言 需求是获取某个时间范围内每小时数据和上小时数据的差值以及比率.本来以为会是一个很简单的 sql ,结果思考两分钟发现并不简单,网上也没找到参考的方案,那就只能自己慢慢分析了. 刚开始没思路, ...
- 打印查询到的mysql_从mysql查询中打印随机行
我正在寻找一种创建协作翻译部件的方式.所以我有一个mysql数据库和表(称为翻译),以及一个允许用户一次翻译一页的小脚本. 但我不太相信我的剧本.我认为它不够高效.首先,mysql获取所有具有空'en ...
- php while mysql_我怎么能避免在PHP的While循环中使用MySQL查询
我有一个输出类列表的while循环.在类数据库中,教师名称由用户数据库中的教师ID确定. 这是我的数据库结构. Classes Database --------------------------- ...
- 结构化查询语句简称mysql_整理MySql常用查询语句
MySql的性能优化 性能优化是通过某些有效的方法提高MySQL数据库的性能.性能优化的目的是为了是MySQL数据运行速度更快.占用的磁盘空间更小.性能优化包括很多方面,例如优化查询速度.优化更新速度 ...
- 黄聪mysql_黄聪:mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法
mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添 ...
- mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。
下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...
- MySQL查询进阶之多表查询
一.多表查询 1.引出 2.笛卡尔积 3. 笛卡尔积的解决方法 二.多表查询分类 1.等值连接和非等值连接 2.自连接和非自连接 3.内连接和外连接 SQL92:使用(+)创建连接 SQL99语法实现 ...
- smarty mysql_Smarty处理mysql查询数组
Smarty处理mysql查询数组 MySQL的查询结果一般是一个数组,而不是所有结果集.因此我们需要将结果全部存到数组中进行处理,然后就可以很轻松的再Smarty中使用了. PHP Mysql 代码 ...
- MYSQL 查询数据排序数据和分组数据
在mysql查询过程中,可以对数据进行过滤,也可以对数据进行排序,可以对数据分组,下面分别讲述排序数据和分组数据例子.1,数据的排序 使用 ORDER BYselect * from where id ...
最新文章
- 最新数据分析与商业智能趋势前瞻
- 这样讲原码、反码、补码!学妹连夸我很猛!!
- 大数据平台搭建包含哪些层级
- sqlserver 没有维护计划_设定数据库备份计划,安全放心不怕事!
- 基于网页分析构思出的正文提取算法
- Kubernetes 小白学习笔记(10)--搭建一个kubernetes集群-组建节点网络
- windows下安装sqlmap 详细教程
- 「缠师课后回复精选」第9课 甄别“早泄”男的数学原则!
- 信捷无线触摸屏与plc实现多从站MODBUS通讯
- 大一html网页制作PPT,HTML网页制作.ppt
- 信息系统项目管理师(软考高项)
- 网络安全:ARP和IP协议
- 英文歌的计算机普,好听的英文歌:See You Again--DJ Frank ECharlie Puth
- 混合颜料-python实现
- UI设计--蓝湖切图
- 拼多多商家推广常见问题解答!
- 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等
- php的设计模式和mvc,mvc设计模式是什么
- 原来Oracle也不喜欢“蜀黍(r6笔记第54天)
- 刘诚昊20162316 第一周作业