3

我有以下表格(为简单起见,省略了其他表格)。1 适用于所有人,2 适用于这些人所从事的运动。我正在使用 php 来允许用户查看人员列表。他们可以按人名或他们参加的运动进行过滤。所以,我希望能够看到所有打棒球和足球的人。

create table people (
  id int,
  name varchar(50)
  );

create table people_to_sports (
  personID int,
  sportID int,
  primary key(personID,sportID)
  );

基本上我的问题是,我如何使用 people_to_sports 来获取所有参加运动 1 和运动 2 的人的列表?

这里有一个 sqlfiddle 。

谢谢!

4

2 回答 2

5
SELECT
  personID
FROM
  people_to_sports
WHERE
  sportID IN (1, 2)
GROUP BY
  personID
HAVING
  COUNT(*) = 2
于 2012-09-17T14:17:56.753 回答
1
SELECT personID, COUNT(personID) AS cnt
FROM people_to_sports
WHERE sportID IN (1, 2)
GROUP BY personID
HAVING cnt = 2
于 2012-09-17T14:18:13.060 回答