如何加入 MYSQL 中没有 NULL 值的多个 table?

How to Join multiple table without NULL value in MYSQL?

我需要查询方面的帮助: 有 3 个表名为:

 1. comments (fields: id, uacc_id_fk , comment)
             (values: 1, 5, my comment)
             (values:2, 10, hi im fine)

 2. dogowner_profile (fields: uacc_id_fk,dpro_name,dpro_image)
                     (values:5,Jones,Jones.jpg)


 3. doglover_profile (fields:uacc_id_fk,dlpro_name,dlpro_image)
                     (values:10,jeeva,jeeva.jpg)

我需要这样的结果:

(fields: uacc_id_fk , comment , name , image)
(values: 5, my comment, jones, jones.jpg)
(values: 10, hi i'm Fine, jeeva, jeeva.jpg)

但是我现在得到的输出是这样的:

我在这里使用的查询是:

  SELECT comments . * 
       , dpro_name AS Name
       , dlpro_name AS Name
       , dpro_image AS Image
       , dlpro_image AS Image
    FROM comments
    LEFT 
    JOIN dogowner_profile 
      ON comments.uacc_id_fk = dogowner_profile.dpro_uacc_id_fk
    LEFT 
    JOIN doglover_profile 
      ON comments.uacc_id_fk = doglover_profile.dlpro_uacc_id_fk

但是我得到的结果是:

(fields:id,uacc_id_fk,comment,name,name,image,image)
(values:1,5, my comment,jones,NULL,jones.jpg,NULL)
(values:2,10,hi i'm Fine,NULL,jeeva,NULL,jeeva.jpg)

我觉得这些SQL对你有用。

       SELECT comments . uacc_id_fk  ,comments.comment , dpro_name AS Name,dpro_image AS Image
       FROM    comments
      JOIN dogowner_profile ON comments.uacc_id_fk = dogowner_profile.dpro_uacc_id_fk

    Union   

        SELECT comments . uacc_id_fk  ,comments.comment , dlpro_name AS Name,dlpro_image AS Image
        FROM    comments
       JOIN doglover_profile ON comments.uacc_id_fk = doglover_profile.dlpro_uacc_id_fk`

谢谢。

如果您有多个列可能包含数据或可能NULL,并且您想找到第一个非NULL一个,就用COALESCE:

SELECT
    comments.*,
    COALESCE(dpro_name, dlpro_name) AS Name,
    COALESCE(dpro_image, dlpro_image) AS Image
 FROM
     comments
     LEFT JOIN dogowner_profile ON
         comments.uacc_id_fk = dogowner_profile.dpro_uacc_id_fk
     LEFT JOIN doglover_profile ON
         comments.uacc_id_fk = doglover_profile.dlpro_uacc_id_fk;