Sql Oracle查询不返回空值
我希望下面的查询在使用左连接时返回空行,其中WEBSITE_URL表中没有匹配的行。 因此,我想看到的是URLTYPE表中的所有url类型以及WEBSITE_url表中的任何匹配记录Sql Oracle查询不返回空值,sql,oracle,Sql,Oracle,我希望下面的查询在使用左连接时返回空行,其中WEBSITE_URL表中没有匹配的行。 因此,我想看到的是URLTYPE表中的所有url类型以及WEBSITE_url表中的任何匹配记录 SELECT WU.NC_WEBSITE_ID_FK, WU.TC_URL, UT.TC_URLTYPE_NAME FROM WEBSITE_URL WU, URLTYPE UT WHERE WU.NC_URL_TYPE_ID_FK(+) = UT.NC_UR
SELECT
WU.NC_WEBSITE_ID_FK,
WU.TC_URL,
UT.TC_URLTYPE_NAME
FROM
WEBSITE_URL WU,
URLTYPE UT
WHERE
WU.NC_URL_TYPE_ID_FK(+) = UT.NC_URLTYPE_ID
AND
NC_WEBSITE_ID_FK = '1622'
这是输出:
1622 http://www.test.com PRODUCTION (PUBLIC)
1622 http://preprod.test.com PREPRODUCTION
1622 http://review.test.com REVIEW
试试这个:
SELECT
WU.NC_WEBSITE_ID_FK,
WU.TC_URL,
UT.TC_URLTYPE_NAME
FROM
URLTYPE UT
LEFT JOIN
WEBSITE_URL WU ON WU.NC_URL_TYPE_ID_FK = UT.NC_URLTYPE_ID
AND WU.NC_WEBSITE_ID_FK = '1622'
在本例中,使用标准联接类型outer或left,而不仅仅是旧的sql语法
SELECT WU.NC_WEBSITE_ID_FK, WU.TC_URL, UT.TC_URLTYPE_NAME
FROM URLTYPE UT
FULL OUTER JOIN WEBSITE_URL WU ON UT.NC_URLTYPE_ID = WU.NC_URL_TYPE_ID_FK(+)
WHERE NC_WEBSITE_ID_FK = '1622'
首先,学习使用显式连接语法。很少有人真正理解旧的Oracle语法了 其次,在所有列上使用表别名 如果NC_WEBSITE_ID_FK来自WEBSITE_URL,则需要将条件移动到ON子句:
另外,如果NC_WEBSITE_ID_FK是一个数字,则不要将常量值放在单引号中。混用数据类型对人和优化器都有误导性。select*from WEBSITE\u URL其中NC\u-ID\u-FK='1622'和NC\u-URL\u-TYPE\u-ID\u-FK不在select NC\u-URLTYPE\u-ID from-URLTYPE请添加一些上下文,而不仅仅是吐出一些代码。这接近我想要的输出,它唯一没有做的事情就是在空行中输出NC_网站_ID_FK,我不确定这是否可能。@jeeperscropers。如果没有匹配项,该列的值如何?
SELECT WU.NC_WEBSITE_ID_FK, WU.TC_URL, UT.TC_URLTYPE_NAME
FROM URLTYPE LEFT JOIN
WEBSITE_URL WU
ON WU.NC_URL_TYPE_ID_FK = UT.NC_URLTYPE_ID AND
NC_WEBSITE_ID_FK = '1622';