Mysql 如何调整JOIN子句,以便在结果中返回具有NULL值的列的行?
如何调整此JOIN子句,以便在结果中返回CountLocId或CountNatId列为空值的行 换句话说,如果local_ads表中没有匹配项,我仍然希望返回nat_ads表中的用户结果,反之亦然Mysql 如何调整JOIN子句,以便在结果中返回具有NULL值的列的行?,mysql,join,Mysql,Join,如何调整此JOIN子句,以便在结果中返回CountLocId或CountNatId列为空值的行 换句话说,如果local_ads表中没有匹配项,我仍然希望返回nat_ads表中的用户结果,反之亦然 SELECT u.franchise, CountLocId, TotalPrice, CountNatId, TotalNMoney, ( TotalPrice + TotalNMoney )TotalRev FROM users u LEFT JOIN local_rev lr ON u.user
SELECT u.franchise, CountLocId, TotalPrice, CountNatId, TotalNMoney, (
TotalPrice + TotalNMoney
)TotalRev
FROM users u
LEFT JOIN local_rev lr ON u.user_id = lr.user_id
LEFT JOIN (
SELECT lrr_id, COUNT( lad_id ) CountLocId, SUM( price ) TotalPrice
FROM local_ads
GROUP BY lrr_id
)la ON lr.lrr_id = la.lrr_id
LEFT JOIN nat_rev nr ON u.user_id = nr.user_id
INNER JOIN (
SELECT nrr_id, COUNT( nad_id ) CountNatId, SUM( tmoney ) TotalNMoney
FROM nat_ads
WHERE MONTH = 'April'
GROUP BY nrr_id
)na ON nr.nrr_id = na.nrr_id
WHERE lr.month = 'April'
AND franchise != 'Corporate'
ORDER BY franchise
提前感谢您的帮助 在进行左连接时,请在where子句中尝试以下操作。这将获取右表中具有匹配条件的所有行 例如
在进行左连接时,请尝试在where子句中执行以下操作。这将获取右表中具有匹配条件的所有行 例如
使用此模板,因为它可以确保:
- 每个用户id只有一条记录(请注意,所有子查询都有一个按用户id分组的记录),因此对于用户表上的一条记录,子查询上有一条(或没有)记录
- 独立联接(和计算数据)不会混淆在一起
使用此模板,因为它可以确保:
- 每个用户id只有一条记录(请注意,所有子查询都有一个按用户id分组的记录),因此对于用户表上的一条记录,子查询上有一条(或没有)记录
- 独立联接(和计算数据)不会混淆在一起
显然MySQL没有完全连接将lr.month='April'移动到该表的ON子句显然MySQL没有完全连接将lr.month='April'移动到该表的ON子句对不起,我尝试了几十种插入方法,但都没有成功。不确定我是做错了,还是解决方案不起作用。它产生的结果与我以前得到的结果相同。对不起,我尝试了几十种方法插入它,但都没有成功。不确定我是做错了,还是解决方案不起作用。它产生的结果与我之前得到的结果相同。
LEFT JOIN local_rev lr ON (u.user_id = lr.user_id) or (u.user_id IS NULL)
SELECT u.franchise, one.CountLocId, one.TotalPrice, two.CountNatId, two.TotalNMoney, (COALESCE(one.TotalPrice,0) + COALESCE(two.TotalNMoney,0)) TotalRev
FROM users u
LEFT JOIN (
SELECT x.user_id, sum(xORy.whatever) as TotalPrice, count(xORy.whatever) as CountLocId
FROM x -- where x is local_rev or local_ads I dont know
LEFT JOIN y on x.... = y.... -- where y is local_rev or local_ads I dont know
GROUP BY x.user_id
) as one on u.user_id = one.user_id
LEFT JOIN (
SELECT x.user_id, sum(xORy.whatever) as TotalNMoney, count(xORy.whatever) as CountNatId
FROM x -- where x is nat_rev or nat_ads I dont know
LEFT JOIN y on x.... = y.... -- where y is nat_rev or nat_ads I dont know
GROUP BY x.user_id
) as two on u.user_id = two.user_id