2013-12-07 140 views
0

我有一個表叫我的數據庫Player,它看起來像這樣MySQL查詢選擇重複

id placex placey wealth strenght goalx goaly 
---------------------------------------------------------------  
    1  500  20  3335  2500  500  440 
    2  500  20  777  2000  20  500 
    3  20  500  1000  2000  500  20 
    4  500  440  1000  2000  20  20 

我需要將在玩家一個位於同一位置的條件顯示ID和財富查詢所以應該有placex,placey的重複用於不同的球員

在這個表中,我們將有ID爲1,播放器ID 2在同一個地方的球員,我寫了這個

SELECT 
    id, placex, placey, wealth 
FROM 
    Player 
WHERE 
    placex IN (SELECT placex FROM Player HAVING COUNT(id) > 1); 

,我得到這個作爲輸出

+----+--------+--------+--------+ 
| id | placex | placey | wealth | 
+----+--------+--------+--------+ 
| 1 | 500 |  20 | 3335 | 
| 2 | 500 |  20 | 777 | 
| 4 | 500 | 440 | 1000 | 
+----+--------+--------+--------+ 

我需要消除id爲4的球員,所以我要如何修改我的查詢還包括placey的DUP的

我期望能獲得這個

| id | placex | placey | wealth | 
    1 500  20  3335 
    2 500  20  777 
+0

的輸出結果,你的預期? – Loc

+0

我希望得到相同的輸出,因爲我用quary寫了除了沒有最後一行,所以應該沒有播放器id 4那裏 – russiandobby

+0

測試我的解決方案 – Loc

回答

1

運行這個,讓我知道你的結果:

SELECT A.id, A.placex, A.placey, A.wealth 
FROM Player A, 
    (SELECT placex, placey 
     FROM Player 
     GROUP BY placex, placey 
     HAVING COUNT(*) > 1 
    ) B 
WHERE A.placex = B.placeX 
AND A.placey = B.placey 
+0

是的,謝謝你的作品 – russiandobby

0
Select id, wealth From Player 
inner Join (
Select PlaceX, PlaceY From Player Having(count(id) > 1) Occupied 
On Occupied.PlaceX = Player.PlaceX and Occupied.PlaceY = Player.PlaceY 

在子查詢爲您提供更多選擇之前,請務必查看聯接。

+0

OMG對不起,我用我的小提琴編輯了你的文章。 – Mihai

+0

我的學校服務器不會讓我使用佔用,給我一個錯誤>< – russiandobby

+0

Um更改佔用B然後。傾向於使我的別名有意義,但只要它們對於查詢而言是獨一無二的,那麼它們並不重要,正如您接受的答案所表明的那樣。 –

0
SELECT id,placex,placey,wealth FROM player WHERE placey IN(
SELECT placey FROM Player 
GROUP BY placey 
HAVING COUNT(placey)>1) 

SQL Fiddle

+0

你的解決方案也可以工作謝謝 – russiandobby

+0

@ user2977404它與Loc解決方案是一樣的,但他的速度更快。 – Mihai

0
SELECT p1.id, p1.wealth 
FROM Player AS p1 
INNER JOIN Player AS p2 
ON (p1.id <> p2.id AND p1.PlaceX = p2.PlaceX AND p1.PlaceY = p3.PlaceY) 
GROUP BY p1.id 

您還應該添加一個索引指數雙雙PlaceX和PlaceY在一起。