首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql在从表中读取数据时也选择空值。

mysql在从表中读取数据时也选择空值。
EN

Stack Overflow用户
提问于 2022-08-20 13:57:42
回答 1查看 52关注 0票数 -1
代码语言:javascript
复制
SELECT DISTINCT 
    kol_table.KolID, kol_table.MDMID, kol_table.First_Name, kol_table.Last_Name, kol_table.Mail, kol_table.Address, 
    kol_table.City, kol_table.State, kol_table.Zip, profile_status_master_table.ProfleStatus,
    degree_master_table.Degree, speciality_master_table.SpecialityName, images.Image_Link
    FROM
 kol_table, degree_master_table, kol_degree_map_table, 
 speciality_master_table, kol_speciality_map_table, 
 profile_status_master_table, images
    WHERE (kol_table.kolID = kol_degree_map_table.KOLID and
           kol_degree_map_table.DegreeID = degree_master_table.DegreeID and kol_table.kolID = KOL_ID)
    AND (kol_table.kolID = kol_speciality_map_table.kolID and 
         kol_speciality_map_table.SpecialtyID = speciality_master_table.SpecialityID )
    AND (kol_table.Profile_Status = profile_status_master_table.ProfileStatusID)
    AND (kol_table.mdmID = images.MDMID);

我在这个kol_degree_map_table.DegreeID中有这个代码,我有id,它是从degree_master_table.DegreeID引用的,我在kol_degree_map_table中也有一些null值,这是我在选择数据时想要包含的,但是我不知道如何。有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-20 16:04:20

下面是使用适当的标准SQL语法重写的OPs查询。正如其他人所指出的,绝对不要使用这些逗号联接编写查询。我只发现了几个使用逗号联接有用的例子,但这个答案并不是关于这个的。阅读帖子,了解我们为什么不使用逗号联接编写查询的更多信息。这将帮助您开始编写易于阅读的更好的查询。当使用标准语法时,您可以在WHERE子句中区分连接与查询过滤器是什么。

重写查询之后,很容易看到有零个过滤器,而WHERE子句中OP拥有的每个条件都是实际的联接条件,因此很容易重写。在WHERE条款中没有过滤器。最后,每个表现在都有一个别名,使其更易于阅读。

代码语言:javascript
复制
SELECT 
    kt.KolID, kt.MDMID, kt.First_Name, kt.Last_Name, kt.Mail, kt.Address, 
    kt.City, kt.State, kt.Zip, psmt.ProfleStatus,
    dmt.Degree, smt.SpecialityName, i.Image_Link
FROM
    kol_table kt
    JOIN kol_degree_map_table          mp ON mp.kolid             = kt.kolid
    JOIN kol_speciality_map_table    ksmt ON ksmt.kolID           = kt.kolID
    JOIN degree_master_table          dmt ON dmt.DegreeID         = mp.DegreeID
    JOIN speciality_master_table      smt ON smt.SpecialityID     = ksmt.SpecialtyID
    JOIN profile_status_master_table psmt ON psmt.ProfileStatusID = kt.Profile_Statua
    JOIN images                         i ON i.MDMID              = kt.mdmID
    
--WHERE 
    --(
        --kt.kolID = mp.KOLID AND -- Moved to a JOIN Condition
        -- mp.DegreeID = dmt.DegreeID  AND  -- Moved to a JOIN Condition
        --  kt.kolID = KOL_ID -- This field doesn't have a table.  What table does KOL_ID in this condition come from???
    --) AND
     
    --(
        --kt.kolID = ksmt.kolID   -- Moved to a JOIN Condition AND
        --ksmt.SpecialtyID = smt.SpecialityID -- Moved to a JOIN Condition
    --) AND
    
    -- (kt.Profile_Status = psmt.ProfileStatusID) AND -- Moved to a JOIN Condition
    
    -- (kt.mdmID = i.MDMID) -- Moved to a JOIN Condition
;

我在原始查询中发现了一个问题,即我不知道其中一个原始条件所指的是哪个表,我已经在上面的查询中看到的注释中对这一行做了说明。kt.kolID = KOL_ID

OP最初是问他们如何才能让NULLs离开kol_degree_map_table。这个表基本上是连接链中的第二个表,所以如果没有记录从kol_table绑定到这个表,我们也会丢失我们的记录-- degree_master_table,因为它也加入了kol_degree_map_table。如果OP确实希望仍然看到没有连接到kol_table的kol_degree_map_table记录,那么我们需要离开JOIN,并将一个左连接添加到任何连接到这个表的表中。

下面的新版本与左联接一起添加,尽我所能回答操作问题。

代码语言:javascript
复制
SELECT 
    kt.KolID, kt.MDMID, kt.First_Name, kt.Last_Name, kt.Mail, kt.Address, 
    kt.City, kt.State, kt.Zip, psmt.ProfleStatus,
    dmt.Degree, smt.SpecialityName, i.Image_Link
FROM
    kol_table kt
    LEFT JOIN kol_degree_map_table          mp ON mp.kolid             = kt.kolid
    LEFT JOIN kol_speciality_map_table         ksmt ON ksmt.kolID           = kt.kolID
    LEFT JOIN degree_master_table               dmt ON dmt.DegreeID         = mp.DegreeID
    LEFT JOIN speciality_master_table           smt ON smt.SpecialityID     = ksmt.SpecialtyID
    LEFT JOIN profile_status_master_table      psmt ON psmt.ProfileStatusID = kt.Profile_Statua
    LEFT JOIN images                              i ON i.MDMID              = kt.mdmID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73427289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档