2012-02-08 109 views
0

我想從website.advert中選擇所有記錄,並從不同表中加入玩家名稱。查詢運行時沒有任何錯誤,但存在一個問題,它確實從website.advert中選擇了重複的記錄,當時在播放器表中有多個記錄與account_id相同。查詢選擇重複記錄

這裏是我的查詢:

SELECT `advert`.*, `p`.`name`, `p`.`level` 
    FROM `website`.`advert` 
    LEFT JOIN `player`.`player` `p` 
    ON (`p`.`account_id` = `website`.`advert`.`author_id`) 
    WHERE `advert`.`accepted` = 0 
+0

您需要使用GROUP BY子句'advert.id' – 2012-02-08 13:02:42

回答

2

您需要使用DISTINCT但我有麻煩找出您的查詢。你似乎並不被從website.advert

選擇任何領域對不起,編輯:

SELECT `advert`.*, `p`.`name`, `p`.`level` 
FROM `website`.`advert` 
LEFT JOIN `player`.`player` `p` 
ON (`p`.`account_id` = `website`.`advert`.`author_id`) 
WHERE `advert`.`accepted` = 0 
GROUP BY `advert`.`id` 

我們只是選擇id場現在 - 嘗試,看看它是否讓你更接近你的結果正在期待。

+0

我選擇的所有字段'使用website.advert':'SELECT *廣告'。 – Cyclone 2012-02-08 12:49:21

+0

好吧,從來沒有見過這樣的選擇數據的方式:)嘗試在廣告附近使用'DISTINCT' * – 2012-02-08 12:50:52

+0

@您編輯的答案,返回錯誤:'您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,以便在'*),''''''''''''''''''''''''''''''''''''''''''''附近使用正確的語法。''' – Cyclone 2012-02-08 12:51:00

1

嘗試此查詢:

SELECT a.*, p.name, p.level 
    FROM advert a LEFT JOIN player p 
    ON (p.account_id = a.author_id) 
    WHERE a.accepted = 0 
group by p.account_id