SQL选择AND OR

时间:2013-11-18 13:08:08

标签: mysql sql

我在工作台上编写了一个SQL查询,其中包含100个不同的英国足球队在一个赛季中的比赛细节。团队所在的团队名称,团队玩游戏的日期,团队的状态等属性。换句话说,该表的行可能如下所示:

Liverpool FC, Liverpool, 2013-12-25, Professional 
Arsenal FC  , London   , 2013-10-18, Professional
Swindon FC  , Swindon  , 2013-12-25, Amateur

现在,这些只是三支球队,但我的桌上有100支球队的详细信息,我需要做的是找出两支球队(比如利物浦和斯温顿)的比赛日期。在上面的行中,你可以看到利物浦和斯温顿两人在2013-12-25比赛。我这样写我的SQL查询:

  SELECT date
  FROM footballclubs.tableofgames
  WHERE (team = 'Liverpool') AND (team='Swindon');

我期待2013-12-25的日期出现在工作台上,但我得到的只是空白。有人可以告诉我我做错了什么吗?当我用单词OR替换单词AND时,我会得到一个很长的日期列表,但这不是我想要的。我正在寻找一个利物浦和斯温顿两场比赛的日期,所以肯定要说AND这个词吗?请帮忙。

2 个答案:

答案 0 :(得分:6)

您需要自己加入表格以查找当天玩的所有团队,然后为您的团队添加条件:

SELECT date
FROM footballclubs.tableofgames a 
    JOIN footballclubs.tableofgames b ON a.date=b.date
WHERE a.team='Liverpool' AND b.team='Swindon';

答案 1 :(得分:0)

以这种方式更改您的代码:

SELECT g1.date
FROM footballclubs.tableofgames g1, footballclubs.tableofgames g2
WHERE (g1.team = 'Liverpool') AND (g2.team='Swindon') AND (g1.date=g2.date);

或更具可读性:

SELECT g1.date
FROM (SELECT date FROM footballclubs.tableofgames WHERE team='Liverpool') g1 
     INNER JOIN
     (SELECT date FROM footballclubs.tableofgames WHERE team='Swindon') g2
USING (date)