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

时间:2013-06-18 11:10:56

标签: mysql 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) 约翰逊 - 约翰逊房地产 - 约翰逊贷款

2 个答案:

答案 0 :(得分:4)

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

select  provider
from    accounts
where   id in (2,5)
group by
        provider
having  count(distinct id) = 2

答案 1 :(得分:0)

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)
)