根据另一个表中的条件显示表中的列

Posted

技术标签:

【中文标题】根据另一个表中的条件显示表中的列【英文标题】:Display column from a table based on a condition from another table 【发布时间】:2018-09-10 12:54:33 【问题描述】:

有 2 个表联系人和客户。

**Contact Table**                          
id(primary key)   
org_name                                   
city                                       
state                                     
email 

**Customer Table**   
id(primary key)                                 
created_under_id  
contact_id  
notes  
credit_limit

需要一个查询来显示所有信用额度超过25000的客户的org_name、city、state和email。根据他们的org_name升序显示记录。

我试过这个查询,但它不起作用:

SELECT org_name,city,state,email FROM contact  
    WHERE contact.id IN (SELECT customer.id FROM customer  
                  WHERE credit_limit >25000)ORDER BY org_name ASC;

【问题讨论】:

你能详细说明“不工作”吗?你有错误吗?错误的结果? 【参考方案1】:

您可以在子查询中将customer.id 替换为customer.contact_id

或者,您也可以在这些表之间使用 JOIN 语句:

SELECT c.org_name, c.city, c.state, c.email
  FROM contact c
  LEFT OUTER JOIN customer r
    ON ( c.id = r.contact_id )
 WHERE r.credit_limit > 25000
 ORDER BY c.org_name ASC;

Contact.IDCustomer.contact_id 是用于构建表之间关系的常用列。

【讨论】:

以上是关于根据另一个表中的条件显示表中的列的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL:根据在另一个表中给定条件的列中找到的值插入

用另一个表中的列值替换列的空值

根据另一个表中的列值选择一个表中的行?

根据另一个工作表中的可见范围删除行

如何根据从另一个表中选择的结果更新一个表中的列

将一个表中的值链接到另一个表,并根据 sql 中另一个表中的列对一个表进行切片