我有一张名为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) 约翰逊 - 约翰逊房地产 - 约翰逊贷款
答案 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)
)