美文网首页
MySQL——普通的多表查询

MySQL——普通的多表查询

作者: 刘铁崧 | 来源:发表于2021-12-21 20:31 被阅读0次

    第一种方式:无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;
    

    相关文章

      网友评论

          本文标题:MySQL——普通的多表查询

          本文链接:https://www.haomeiwen.com/subject/tczzfrtx.html