与众不同组SQL查询

时间:2010-12-07 17:20:50

标签: php mysql distinct

我有一些复杂的MySQL查询给我,我无法弄清楚如何写它而不吃大量的内存。 (我真的不介意,如果它会)

我有下表:

              TABLE: users(id,ip)
              ------------------------------------
              4BF1510 | 40.145.10.99 <-- SAME IP (A)
SAME ID   --> 510SD55 | 65.12.105.42 
SAME ID   --> 510SD55 | 45.184.15.10
              201505V | 40.145.10.99 <-- SAME IP (A)
              984AZ6C | 72.98.45.76
                      | 10.15.78.10  <-- SAME IP (B)
                      | 10.15.78.10  <-- SAME IP (B)
SAME ID   --> B1D56SX |  
SAME ID   --> B1D56SX |  

我想要一个查询,每个唯一ID或ip只能获取1个项目,所以:

4BF1510 | 40.145.10.99
510SD55 | 65.12.105.42
984AZ6C | 72.98.45.76
        | 10.15.78.10
B1D56SX |

最重要的事情:

  • 如果多个条目具有相同的IP和相同的ID - &gt;他们将被分组
  • 如果多个条目具有相同的IP但不同的ID - >他们不会被分组
  • 如果多个条目具有相同的ID但不同的IP - >他们将被分组
  • 如果多个条目具有相同的IP但 ID字段 - &gt;他们将被分组
  • 如果多个条目具有相同的ID,但为空 IP字段 - &gt;他们将被分组

这意味着ID应具有信任的第一优先级,因为多个用户可能使用相同的IP。

实现这一目标的任何有效方法?

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用group_contact完成您想要做的事。

实施例

  

SELECT id, GROUP_CONCAT (ip)as ips FROM logs group by id

编辑:忘记分组