[英]SQL Server Simple Query Joining Table With Itself
我有一张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.
好的,听起来您要尝试的是查找发生多个游戏的日期。 在这种情况下
SELECT a.Date, count(*) as CountOfDate
FROM GAMES a
GROUP BY a.Date
HAVING count(*) > 1
这样的事情怎么样?
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.