Sql 简单的结合,但是
我既不是程序员,也不是SQL专家,目前正在开发一个小的MS Access数据库,我正处于一个进退两难的境地。我知道,这很方便,但适合这份工作 这就是我的问题。 我有两张桌子:Sql 简单的结合,但是,sql,ms-access,Sql,Ms Access,我既不是程序员,也不是SQL专家,目前正在开发一个小的MS Access数据库,我正处于一个进退两难的境地。我知道,这很方便,但适合这份工作 这就是我的问题。 我有两张桌子: Table A: Order - ProjectNr - Description - CompanyID A111 444 xxx 999 A333 444 xxx 999 A444 444 xxx
Table A:
Order - ProjectNr - Description - CompanyID
A111 444 xxx 999
A333 444 xxx 999
A444 444 xxx 999
...
所以这两个表几乎相同,但OrderNr不同。它们的开头不同,但在第一个角色之后它们是相同的。
现在我想合并这两个表-通过简单的并集来完成
问题是,如果已经有一个ProjectNr的OrderNr以“a”开头,我不想要“B”OrderNr。在联盟的结果中
因此,在上述示例中,结果应为:
Order - ProjectNr - Description - CompanyID
A111 444 xxx 999
B222 444 xxx 999
A333 444 xxx 999
A444 444 xxx 999
没有B333,因为已经有A333入口
当然,通过我的简单结合,我得到了A333和B333
您可以在MS Access 2016中为我提供一些帮助吗?您可以使用
不存在:
select * from TableA
union all
select b.* from TableB as b
where not exists (
select 1 from TableA as a
where mid(a.order, 2) = mid(b.order, 2)
)
所以这两个表几乎相同,但OrderNr不同
基于这个前提,我会在继续之前对DB结构提出疑问。
你设计了数据库表吗?您真的需要有两个具有相同数据类型的表吗?似乎一张带有额外字段的表会更好。
比如:
Table A:
OrderCode Order ProjectNr Description CompanyID
A 111 444 xxx 999
A 333 444 xxx 999
A 444 444 xxx 999
B 222 444 xxx 999
B 333 444 xxx 999
而这反过来又应该被推翻
“not exists”解决方案可以工作,但并不理想,尤其是在将其应用于大型表时,因为它不会使用索引表,从而导致性能低下
Table A:
OrderCode Order ProjectNr Description CompanyID
A 111 444 xxx 999
A 333 444 xxx 999
A 444 444 xxx 999
B 222 444 xxx 999
B 333 444 xxx 999