【发布时间】:2015-01-29 11:09:10
【问题描述】:
我有一个包含 2 个表的表结构
这样的餐桌人:
id name etc.
1 test
2 smith
3 shaw
还有第二个表格 personhist,我在其中记录了姓名的更改,如下所示:因此,如果有人因为结婚或类似原因更改了姓名,我仍然使用旧名。
id personid name etc.
1 1 oldtest
现在我有以下查询
select * from person p
Left join personhist ph on p.id = ph.personid
where (upper(p.name) = upper('oldtest') or upper(ph.name) like upper('oldtest'));
此查询将产生以下结果
id name id personid name
1 test 1 1 oldtest
但我只想得到实际的名称结果。所以问题是:如果我加入的表中有记录,有没有办法只显示“主”表中的数据?
【问题讨论】:
-
我的第一个想法是'不要使用
select *',但我不太确定你想看到什么——只是p.name值?那为什么要加入呢?也许您可以展示您的预期结果,以及一些更多样化的数据? -
@AlexPoole 我想从人那里看到一切,但如果我用旧名称搜索,我想看到新名称
标签: sql oracle select join left-join