如何解决如何写正确的两个表的左联接?
我想连接两个表,第一个表主键数据类型是数字,第二个表主键数据类型是VARCHAR2(30 BYTE)。如何连接两个表。
我尝试了这段代码,但是第二个表的所有值都为空。为什么呢?
SELECT a.act_phone_no,a.act_actdevice,a.bi_account_id,a.packag_start_date,c.identification_number,FROM ACTIVATIONS_POP a
left JOIN customer c
on TO_CHAR(a.act_phone_no) = c.msisdn_voice
第一张桌子
act_phone_no bi_account_id
23434 45345
34245 43556
第二张表
msisdn_voice identification_number
23434 321113
34245 6547657
解决方法
您似乎并没有告诉我们所有信息。如果这样的示例数据查询 works (如果写得正确):
file.watch()
可能是什么问题?谁知道。如果您得到 some 结果,但是SQL> with
2 -- Sample data
3 activations_pop (act_phone_no,bi_account_id) as
4 (select 23434,45345 from dual union all
5 select 34245,43556 from dual
6 ),7 customer (msisdn_voice,identification_number) as
8 (select '23434',321113 from dual union all
9 select '34245',6547657 from dual
10 )
11 -- query works OK
12 select a.act_phone_no,13 a.bi_account_id,14 c.identification_number
15 from activations_pop a join customer c on to_char(a.act_phone_no) = c.msisdn_voice;
ACT_PHONE_NO BI_ACCOUNT_ID IDENTIFICATION_NUMBER
------------ ------------- ---------------------
23434 45345 321113
34245 43556 6547657
SQL>
表中的列为空(CUSTOMER
?),则它们实际上可能是NULL
,或者您没有管理连接那些列上的行(用空格左/右填充?)。是否参加例如
NULL
或
on to_char(a.act_phone_no) = trim(c.msisdn_voice)
帮助?
考虑发布适当的测试用例(on a.act_phone_no = to_number(c.msisdn_voice)
和CREATE TABLE
语句)。
您正在使用Oracle吗?
请查看下面的演示
SELECT a.act_phone_no,a.bi_account_id,c.identification_number
FROM ACTIVATIONS_POP a
left JOIN customer c
on TO_CHAR(a.act_phone_no) = c.msisdn_voice;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。