我有这样的查询
SELECT
TA.MOBILE_NUMBER,
TA.AMOUNT,
TA.REFERENCEID,
TB.KEYCOST
FROM TABLEA TA
LEFT JOIN TABLEB TB ON TA.REFERENCEID = TB.REFERENCEID
WHERE TA.STATUS = 0
AND TB.ALIAS = 'KEYCOST'
有些referenceid's tableA
在ALIAS = 'KEYCOST'
中有一个tableb
条目,但有些referenceid's
没有ALIAS = 'KEYCOST'
的任何条目。
我希望referenceid's
显示tableA
中KEYCOST
与TableB
referenceid
的所有TableA
。如果KEYCOST
中的KEYCOST
没有任何Reset
,则结果应包含该数据,但在0
列中显示为0.
请有人在这里帮助我。 谢谢
答案 0 :(得分:2)
将连接条件移动到ON语句,对于简单的NVL应该有用的NULL值,如果第一个值为null,它将显示第二个值。像这样:
SELECT TA.MOBILE_NUMBER, TA.AMOUNT, TA.REFERENCEID, NVL(TB.KEYCOST,0) KEYCOST FROM TABLEA TA
LEFT JOIN TABLEB TB
ON TA.REFERENCEID = TB.REFERENCEID AND TB.ALIAS = 'KEYCOST'
WHERE TA.STATUS = 0
答案 1 :(得分:1)
使用LEFT JOIN
时, second 表中的条件需要进入ON
子句:
SELECT TA.MOBILE_NUMBER, TA.AMOUNT, TA.REFERENCEID, TB.KEYCOST
FROM TABLEA TA LEFT JOIN
TABLEB TB
ON TA.REFERENCEID = TB.REFERENCEID AND TB.ALIAS = 'KEYCOST'
WHERE TA.STATUS = 0;
否则,NULL
生成的LEFT JOIN
值会被过滤掉。
如果您需要0
而不是NULL
,请使用COALESCE()
。目前尚不清楚您指的是哪一列。
答案 2 :(得分:0)
如果您真的想要显示referenceid's
中tableA
的所有KEYCOST
和TableB
referenceid
。如果TableA
中的KEYCOST
没有任何0
,则结果应包含该数据,但会在KEYCOST
列中显示SELECT
TA.MOBILE_NUMBER,
TA.AMOUNT,
TA.REFERENCEID,
NVL(TB.KEYCOST, 0) KEYCOST
FROM TABLEA TA
LEFT JOIN TABLEB TB ON TA.REFERENCEID = TB.REFERENCEID
AND TB.ALIAS = TA.ALIAS
WHERE TA.STATUS = 0
AND TA.ALIAS = 'KEYCOST'
。< / p>
SELECT
根据您的解释,您想要ALIAS
= KEYCOST
tableA
数据,因此我们必须保持AND
的条件并添加join
ALIAS
source /etc/environment
列{。}}。