首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql使用相同的条件和不同的值在一个表上查询一个字段两次

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

Stack Overflow用户
提问于 2013-06-18 19:10:56
回答 2查看 951关注 0票数 1

我有一张名为accounts的桌子

我有一个名为

代码语言:javascript
复制
id  
provider
type
account_name 

代码语言:javascript
复制
id - int(12)
provider -int(12)
type - int(12)
account_name - Varchar(25)

我认为连接或子查询可以工作,但不能工作。我的目标是显示同时具有这两个type=2 and type=5 ORDER By account_name的提供程序

eg显示了同时销售房地产和贷款的公司

代码语言:javascript
复制
Select * from accounts WHERE type = 2 and type=5

我知道上面的方法行不通,但这正是我所需要的心态。我很感谢大家的帮助,让这个工作。

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

例如

提供商Account_Name1(此匹配2) Account_Name2(匹配5)强生房地产-强生贷款

EN

回答 2

Stack Overflow用户

发布于 2013-06-18 19:13:31

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

代码语言:javascript
复制
select  provider
from    accounts
where   id in (2,5)
group by
        provider
having  count(distinct id) = 2
票数 4
EN

Stack Overflow用户

发布于 2013-06-18 20:06:21

代码语言:javascript
复制
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个表来表示会更好。

代码语言:javascript
复制
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)
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17167405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档