首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server简单查询连接表

SQL Server简单查询连接表
EN

Stack Overflow用户
提问于 2014-11-10 18:13:42
回答 2查看 120关注 0票数 0

我有一张桌子GAMES,里面有过去玩过的游戏的数据。此查询的目的是查找在同一天玩过的所有游戏,并打印日期、两个玩过的队和结果。该表的设置如下:

游戏

代码语言:javascript
复制
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
...

我认为解决方案是在类似于以下内容的查询中加入表

代码语言:javascript
复制
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中的值。我是否可以用一种方法来编写查询,以便它一次找到所有的游戏,而不是裁剪一个特定的查询来查找每个游戏?谢谢。

预期的结果将采取以下形式:

代码语言:javascript
复制
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. 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-10 18:35:15

像这样的怎么样?

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2014-11-10 18:24:20

好吧,听起来你想要做的是找出不止一个游戏发生的日期。在这种情况下

代码语言:javascript
复制
SELECT a.Date, count(*) as CountOfDate
FROM GAMES a
GROUP BY a.Date
HAVING count(*) > 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26850218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档