SQL 使用具有不同值的相同条件在一个表上查询一个字段两次



我有一个名为accounts的表

我有名为

id  
provider
type
account_name 

它们的结构为

id - int(12)
provider -int(12)
type - int(12)
account_name - Varchar(25)

我认为联接或子查询可以工作,但无法正常工作目的是我想显示同时具有这两种type=2 and type=5 ORDER By account_name的提供程序

例如,显示同时出售房地产和贷款的公司

Select * from accounts WHERE type = 2 and type=5

我知道上述方法不起作用,但它是我需要的心态。我感谢任何帮助,使它工作。

mysql 输出结果在一行中应如下所示。

例如

提供商Account_Name1(此匹配 2( Account_Name2(匹配 5(约翰逊 - 约翰逊房地产 - 约翰逊贷款

这应该查找同时具有id 2 和 5 的提供程序:

select  provider
from    accounts
where   id in (2,5)
group by
        provider
having  count(distinct id) = 2
select distinct acc2.provider,acc2.account_name,acc5.account_name
from accounts acc2 inner join accounts acc5 on acc2.provider=acc5.provider
where acc2.type = 2 and acc5.type = 5

这有点假设不会有重复的provider/type组合。 例如,一个提供程序具有具有相同type的多行。事实上,如果数据符合该要求,则不需要distinct

我还要说,这是一个有点奇怪的桌子,尽管我不知道完整的故事。这似乎是用于将提供程序与帐户类型相关联的表。提供商和帐户类型的每个关联都可以有一个Account_Name。我认为这最好用 3 张表来表示。

TABLE Provider (
   ID INT PK
   Name VARHCAR(50)
)
TABLE AccountType (
   ID INT
   AccountType VARCHAR(50)
)
TABLE ProviderAccountType (
   ProviderID PK FK
   AccountTypeID PK FK
   AccountName VARCHAR(50)
)

最新更新