如何在Oracle SQL中编写SQL语句,并在同一个表中的同一列上应用两个AND条件?

时间:2013-02-21 19:59:23

标签: sql oracle

我需要帮助来编写Oracle SQL查询,详情如下:

我有一个表offender_gang_affiliations,其中包含两个名为offender_iddept_dvsn_code的不同列。

我想要一个所有罪犯ID的列表,其中表中有一行dept_dvsn_code的'A'以及dept_dvsn_code的'J'。我已尝试应用各种ANDOR条件,但我无法提出任何有用的信息。

1 个答案:

答案 0 :(得分:3)

听起来你想要像

这样的东西
SELECT offender_id
  FROM offender_gang_affiliations
 WHERE dept_dvsn_code IN ('A','J')
 GROUP BY offender_id
HAVING COUNT(DISTINCT dept_dvsn_code) = 2

制定查询的另一种方法是

SELECT offender_id
  FROM offender_gang_affiliations
 WHERE dept_dvsn_code = 'A'
INTERSECT
SELECT offender_id
  FROM offender_gang_affiliations
 WHERE dept_dvsn_code = 'J'

一般来说,我希望第一种选择更有效率。根据开发人员的不同,第二种选择可能会更清晰。