2012-02-08 128 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