我有一张桌子GAMES,里面有过去玩过的游戏的数据。此查询的目的是查找在同一天玩过的所有游戏,并打印日期、两个玩过的队和结果。该表的设置如下:
游戏
Home | Visitors|Date |Result
-------------------------------------
Bengals| Browns | 1/1/2012 | Tie
Browns | Bengals | 1/1/2012 | Loss
Giants | Jets | 4/2/2013 | Win
Giants | Cowboys | 4/2/2013 | Loss
Bears | Ravens | 5/3/2012 | Tie
Bills | Dolphins| 10/11/2014| Win
...我认为解决方案是在类似于以下内容的查询中加入表
select
A.Date, A.Home, A.Visitors, A.Result
from
GAMES as A, GAMES as B
where
A.Date = B.Date
and A.Home = B.Visitors;但是在这个特定的查询中,它将只返回一个游戏--首先,总共有6个游戏应该显示,并且只返回表A中的值。我是否可以用一种方法来编写查询,以便它一次找到所有的游戏,而不是裁剪一个特定的查询来查找每个游戏?谢谢。
预期的结果将采取以下形式:
1 2012-1-1 Bengals Browns Tie
2 2012-1-1 Browns Bengals Loss
3 2013-4-2 Giants Jets Win
4 2013-4-2 Giants Cowboys Loss
etc. 发布于 2014-11-10 18:35:15
像这样的怎么样?
SELECT
A.Date, A.Home, A.Visitors, A.Result
FROM
GAMES as A
WHERE EXISTS (SELECT *
FROM GAMES as B
WHERE A.DATE = B.DATE
AND (A.Home <> B.Home
OR A.Visitors <> B.Visitors))
ORDER by A.Date ASC发布于 2014-11-10 18:24:20
好吧,听起来你想要做的是找出不止一个游戏发生的日期。在这种情况下
SELECT a.Date, count(*) as CountOfDate
FROM GAMES a
GROUP BY a.Date
HAVING count(*) > 1https://stackoverflow.com/questions/26850218
复制相似问题