如何加入 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;
我需要查询方面的帮助: 有 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;