MySQL——普通的多表查询


第一种方式:无WHERE条件的笛卡尔积方式

运算结果为一张表
表中字段:集合多表中的所有字段,字段数=(表1字段数+表2字段数)
表中记录:表1的每条记录与表2的所有记录进行匹配,记录数=(表1记录数*表2记录数)
格式:SELECT 字段名 FROM 表名列表;
注意:
· 字段名的书写格式:字段名(单表);表名.字段名(多表)
· 字段名列表中的字段所涉及的表,一定包含在表名列表中
例子:

查询list1表和list2表的数据(多种写法)
SELECT * FROM list1,list2;
SELECT list1*,list2* FROM list1,list2;

查询name字段
SELECT list1.name,list2.name FROM list1,list2;

第二种方式:有WHERE条件的普通多表查询方式

格式:SELECT 字段名列表 FROM 表名列表 WHERE 条件
前提:多表之间必须有关联
例子:

份表

id province_id province_name
1 13000 河北省
2 14000 陕西省
3 15000 四川省

市表

id province_id city_name city_id
1 13000 石家庄市 131000
2 13000 沧州市 131001
3 14000 西安市 131002
4 15000 成都市 131003

县表

id city_id country_name country_id
1 131000 正安县 132100
2 131002 蓝田县 132110
3 131003 三台县 132111
4 131003 四台县 132112
查询省市信息
SELECT provincelist.province_name,citylist.city_name FROM provincelist,citylist
WHERE provincelist.province_id=citylist.city_id;              ///写明两个表的关联关系

查询省市县信息
SELECT provincelist.province_name,citylist.city_name,countrylist.country_name FROM provincelist,citylist,countrylist
WHERE provincelist.province_id=citylist.province_id AND citylist.city_id=countrylist.city_id;

单表多次复合查询案例

如下tasklist表,执行任务1需要先执行任务4,执行任务4要先执行任务2,以此类推
任务:查询每个任务的间接先行任务(如1的间接先行任务为2)

tasklist表

id task super_task country_id
1 任务1 4 132100
2 任务2 132110
3 任务3 1 132111
4 任务4 2 132112

代码:

SELECT A.id,B.super_task FROM tasklist AS A,tasklist AS B
WHERE A.super_task=B.id;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据库查找方式进阶 一.单表查询 1.查看表单选择段落 1.disinct 所有内容去重:select disin...
    25岁学Python阅读 937评论 0 1
  • 联合查询 连接查询 子查询 示例 不管是大型还是小型项目,一个数据库里都会有N张表,表之间也通过一对一、多对一或者...
    Ly3911阅读 1,100评论 0 1
  • 一:MySQL简介与安装 MySQL是一种中型、易用的关系型数据库管理系统(DBMS,Database Man...
    仙灵儿阅读 1,203评论 0 0
  • SQL语言基础 本章,我们将会重点探讨SQL语言基础,学习用SQL进行数据库的基本数据查询操作。另外请注意本章的S...
    厲铆兄阅读 5,347评论 2 46
  • 大家好,我是IT修真院成都分院第8期的JAVA学员邹苏,一枚正直纯洁善良的java程序员。 今天给大家分享一下,修...
    Pwr阅读 482评论 0 1