sql 联表查询(两张表)

SELECT
    teacher_info.teacher_id,
    tearcher_name,
    teacher_number,
    tearcher_type,
    teacher_image,
    teacher_gender,
    teacher_birthday,
    identity_number,
    company,
    technical_title,
    technical_grade,
    major_type_id,
    major_id,
    courses_offer,
    phone,
    email,
    relative_material,
    LEVEL,
    country,
    province,
    city,
    region
FROM
    teacher_info,
    teacher_region_info
WHERE
    teacher_info.teacher_id = teacher_region_info.teacher_id

上面的语句会让teacher_region_info表中如果没有对应的teacher_id就使teacher_info的数据也不显示出来了,如何更改代码?

找到了答案:

SELECT
    teacher_info.teacher_id,
    tearcher_name,
    teacher_region_info.city
FROM
    teacher_info,
    teacher_region_info
WHERE
    teacher_info.teacher_id = teacher_region_info.teacher_id
UNION
    SELECT
        teacher_info.teacher_id,
        tearcher_name,
        teacher_region_info.city
    FROM
        teacher_info,
        teacher_region_info
    WHERE
        teacher_info.teacher_id != NULL

这时候需要用到外连接
把from后面的改成
from teacher_info left join teacher_region_info on teacher_info.teacher_id = teacher_region_info.teacher_id
SQL的四种连接-左外连接、右外连接、内连接、全连接 建议楼主可以去学一下 很有用

 select *
 from teacher_info
 left join teacher_region_info on teacher_region_info.teacher_id=teacher_info.teacher_id

现在不是已经实现了么?

lz是不是没有把需求搞清楚?

SELECT
teacher_info.teacher_id,
tearcher_name,
teacher_number,
tearcher_type,
teacher_image,
teacher_gender,
teacher_birthday,
identity_number,
company,
technical_title,
technical_grade,
major_type_id,
major_id,
courses_offer,
phone,
email,
relative_material,
LEVEL,
country,
province,
city,
region
FROM
teacher_info T1 LEFT JOIN teacher_region_info T2 ON T1.teacher_id = T2.teacher_id

WHERE
teacher_info.teacher_id = teacher_region_info.teacher_id(+)

WHERE
teacher_info.teacher_id = teacher_region_info.teacher_id(+)