我在工作台上编写了一个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这个词吗?请帮忙。
答案 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)