簡體   English   中英

SQL Server簡單查詢聯接表本身

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM