0

我有一个包含 cookieID、IP、电子邮件和其他数据详细信息的用户访问日志表。用户可能从多个 IP、不同的 cookieID 访问,甚至留下不同的电子邮件。我想根据任何常见标识符检索特定用户的所有日志事件,例如:

Row   cookieID IP          email
1:    1        10.0.0.12   d@m.com
2:    2        10.0.0.12   h@m.org //match to #1 based on common IP
3:    1        192.168.1.1 null //match to #1 based on common cookieID
4:    3        192.168.2.2 r@y.com //match to #5 based on common cookieID
5:    3        10.11.12.13 h@m.org //match to #2 based on email

在这种情况下,我需要找到一种方法来检索所有行,因为在某些时候,它们都通过电子邮件或 cookieID 或 IP 相关联

任何人都知道如何有效地实现它?

4

2 回答 2

0

尝试这个:

select t1.row, t2.row
from   table t1
inner join table t2
on    t1.cookieId = t2.cookieId
or    t1.email = t2.email
or    t1.ip = t2.ip
where t1.row != t2.row
于 2013-06-21T22:21:44.660 回答
0

在许多数据库中,如果您想有效地执行此操作,您希望orjoin条件中避免。进行单独的连接通常更有效:

select t1.row, tc.row as cookie_row, te.row as email_row, ti.row as ip_row
from table t1 left outer join
     table tc
     on t1.cookieId = tc.cookieId left outer join
     table te
     on t1.email = te.email left outer join
     table ti
     on t1.ip = te.ip;
于 2013-06-22T00:07:46.417 回答