避免MySQL中同一记录的多个输出

时间:2012-03-08 04:07:42

标签: mysql

我有一个在选择记录时适用于多种条件的查询。

select
    uid, uid2, up, 
    datediff(CURRENT_TIMESTAMP, tim) \"dt\", 
    id, behind, sid, spid 
from Z_uup, Z_snoop, Z_wshop 
where 
    (Z_wshop.sid='5555' or Z_snoop.id='5555' ) and 
    (
        Z_uup.uid=Z_snoop.id or 
        Z_uup.uid2=Z_snoop.id or 
        Z_uup.uid=Z_snoop.behind or 
        Z_uup.uid2=Z_snoop.behind or 
        Z_uup.pid=Z_wshop.spid
    )
order by Z_uup.tim desc;

Z_uup只有一个条目,但似乎我得到15次重复与输出相同。为什么会发生这种情况,我该如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

您尝试使用DISTINCT吗?

SELECT DISTINCT field1, field2, ... FROM table1...

这样就不会显示重复记录。

如果速度变慢,请尝试使用Z_uup中的字段进行分组。

答案 1 :(得分:0)

尝试使用GROUP BY:


select  uid,uid2,up,datediff(CURRENT_TIMESTAMP,tim) \"dt\",id,behind,sid,
spid from Z_uup,Z_snoop,Z_wshop where (Z_wshop.sid='5555' or Z_snoop.id='5555' ) 
and (Z_uup.uid=Z_snoop.id or Z_uup.uid2=Z_snoop.id or 
Z_uup.uid=Z_snoop.behind or Z_uup.uid2=Z_snoop.behind or Z_uup.pid=Z_wshop.spid)
group by uid order by Z_uup.tim
 desc;

希望有所帮助

答案 2 :(得分:0)

在您的查询中写下GROUP BY,您可以获得相同的记录。