sql - 简单表设计的最佳 sql 查询

标签 sql database oracle

我正在尝试提出最优化的查询来解决这个问题。

我有一个由列名称(字符串)和组织标识(整数)组成的简单表。此表包含属于一个或多个组织的名称列表。

如何获得“Jim”和“Andy”所属组织的所有名称的列表?

例子:

- John,1
- Jim,1
- Jim,2
- Andy,2
- Carl,2
- Jim,3
- Carl,3
- Andy,4
- John,4
- Jim,5
- Randy,5
- Andy,5

所以查询应该返回给我 Jim,2|Andy,2|Carl,2|Jim,5|Randy,5|Andy,5 因为 Jim 和 Andy 都属于组织 2 和5.

有什么想法吗?

最佳答案

一个简单的 JOIN 应该可以做到;

SELECT DISTINCT t1.name 
FROM Table1 t1
JOIN Table1 t2 ON t1.organization_id = t2.organization_id AND t2.name = 'Jim'
JOIN Table1 t3 ON t1.organization_id = t3.organization_id AND t3.name = 'Andy'
ORDER BY t1.name

An SQLfiddle to test with .

编辑:An Oracle SQLfiddle with the same query .

关于sql - 简单表设计的最佳 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17014449/

相关文章:

sql - 如何将逗号分隔的列转换为 db2 中的多行

sql-server-2005 - "Pivoting"SQL Server 中的非聚合数据

mysql - 我如何在数据库查询中使用 'OR'

oracle - 如何在 Oracle 中使用 DB 链接刷新物化 View

mysql - #1064 从表中删除项目时

sql - 条件 SQL 计数

php - 如何使用密码从 MS Access 数据库中检索网页数据

php - 简单数据库查询的问题

sql - 尝试使用循环将多个值存储到变量中,并使用该特定变量进行插入

oracle - 如何以编程方式从 oracle 表单连接到数据库