我有一个在选择记录时适用于多种条件的查询。
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次重复与输出相同。为什么会发生这种情况,我该如何解决这个问题。
答案 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
,您可以获得相同的记录。