2014-10-20 75 views
0

我试图运行该SQL查询选择:SQL查询从两个表返回重复行

SELECT t.*, tu.*, t.contact_name as contact_name, 
t.contact_email as contact_email, t.ticketnumber as ticketnumber, 
t.subject as subject 
FROM tickets t, ticket_updates tu 
WHERE t.ticketnumber = tu.ticketnumber 
AND tu.type = 'update' AND tu.customer <> 'Y' 
AND t.status = 'Awaiting Customer' AND tu.datetime <= '2014-10-18 16:26:00' 
order by tu.datetime DESC LIMIT 0,5 

它返回正确的结果,但在同一行

+0

它接缝门票和ticket_updates之间的关系是主从,所以如果你得到同样的相同的结果,你可能在子表中相同的行。 – 2014-10-20 15:49:12

回答

1

尝试其显示多个选择DISTINCT:

SELECT DISTINCT t.*, tu.*... 

或者你可以尝试一个GROUP BY:

SELECT t.*, tu.*, t.contact_name as contact_name, t.contact_email as contact_email, 
t.ticketnumber as ticketnumber, t.subject as subject 
    FROM tickets t, ticket_updates tu 
    WHERE t.ticketnumber = tu.ticketnumber AND 
    tu.type = 'update' AND tu.customer <> 'Y' AND 
    t.status = 'Awaiting Customer' AND 
    tu.datetime <= '2014-10-18 16:26:00' 
    GROUP BY tu.`id` 
    order by tu.datetime DESC LIMIT 0,5 
+0

使用DISTINCT仍返回在ticket_updates表相同 – user3843997 2014-10-20 15:32:31

+0

有多个排在门票表 – user3843997 2014-10-20 15:32:57

+0

每一行在这种情况下,'GROUP BY tu.id'应该工作 – AnchovyLegend 2014-10-20 15:37:36

0

为了快速解决,您可以使用SELECT DISTINCT。 通常,重复是数据库和/或连接条件存在问题的提示。所以请确保表中没有重复项,并且连接条件是正确的。