使用左连接空值不显示

时间:2015-03-30 14:02:03

标签: c# asp.net mysql-workbench

BEGIN
SELECT DISTINCT
caccounts.ACODE,
caccounts.TITLE,
feestructure.Amount
FROM
caccounts
LEFT OUTER JOIN feestructure ON caccounts.ACODE = feestructure.FeeHeadCode
where
feestructure.ACODE=aaa
GROUP BY feestructure.ACODE,feestructure.FeeHeadCode;
END

以下是内连接,其中'aaa'值在运行时获取...但是'Amount'为null的行未显示 如果有人知道解决方案,那么请与我分享。感谢

我的声誉非常低,这就是我无法发布图片的原因

3 个答案:

答案 0 :(得分:1)

您具体提到了Amount列,但该列null应该与是否显示记录无关。

最可能的原因是ACODE对于相关特定记录也null,您需要更改where子句以指定ACODE可以null

... where (feestructure.ACODE = @aaa OR feestructure.ACODE IS null) ...

(我假设您正确传入" aaa"作为查询的参数。)

答案 1 :(得分:1)

的WHERE子句

feetructure.ACODE = aaa

只会返回ACODE为aaa的行,这意味着不会返回没有匹配费用结构行的caccounts中的任何行,因为caccounts的ACODE不会存在,因此不是aaa。

因此,您需要在WHERE子句中添加一个条件来解释该条件:

WHERE (feestructure.ACODE = aaa OR feestructure.ACODE IS NULL)

答案 2 :(得分:0)

我只是删除where子句并在左连接中放置feetructure.ACode = aaa

SELECT DISTINCT
feehead.ACODE,
feehead.TITLE,
feestructure.Amount
FROM
feehead
LEFT JOIN feestructure ON feestructure.FeeHeadCode = feehead.ACODE and feestructure.ACode=aaa
GROUP BY feehead.ACode,feehead.TITLE ;