从表A中选择行,其中字符串存在于表B或表C中的类似列中

时间:2017-07-07 17:30:32

标签: sql sql-server

我正在使用3个不同的SQL表。这是表格的样子:

Master Accounts
---------------
CustomerNumber PK
CompanyName
More Columns...

Bill Tos
---------------
MasterCustomerNumber FK
CompanyName

Ship Tos
---------------
MasterCustomerNumber FK
CompanyName

我想写一个MS SQL查询,它返回主帐户表中公司名称包含字符串' ama'的所有列。在三个表格中的任何一个。

这是我当前的SQL:

SELECT DISTINCT
  MA.*
FROM MasterAccounts MA
LEFT JOIN BillTos BT
  ON MA.CustNo = BT.MasterCustNo
LEFT JOIN ShipTos ST
  ON MA.CustNo = ST.MasterCustNo
WHERE MA.CompanyName LIKE '%ama%' OR BT.CompanyName LIKE '%ama%' OR ST.CompanyName LIKE '%ama%'

我的目标是让所有主帐户中的billto或shipto公司名称包含' ama'。

1 个答案:

答案 0 :(得分:0)

我读了你的评论,也许这会更快:

select MA.* from
MasterAccounts MA
join 
(select CustNo  nmb from MasterAccounts where CompanyName LIKE '%ama%'
union 
select MasterCustNo nmb from BillTos  where CompanyName LIKE '%ama%'
union 
select MasterCustNo nmb from ShipTos where CompanyName LIKE '%ama%' ) num on (num.nmb = MA.CustNo) 

如果您需要更多公司,可能会以小写字母使用公司名称......

*如果查询中出现小错误,我很抱歉 - 我读得很快......