【问题标题】:Distinct & Group SQL Query不同和组 SQL 查询
【发布时间】:2010-12-07 17:20:50
【问题描述】:

我有一个有点复杂的 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 -> 它们将被分组
  • 如果多个条目具有相同的 IP 但不同的 ID -> 它们不会被分组
  • 如果多个条目具有相同的 ID 但不同的 IP -> 它们将被分组
  • 如果多个条目具有相同的 IP 但为空 ID 字段 -> 它们将被分组
  • 如果多个条目具有相同的 ID 但为空 IP 字段 -> 它们将被分组

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

有什么有效的方法来实现吗?

非常感谢。

【问题讨论】:

  • 这张桌子上有什么键?我很困惑,你怎么能有两个不同的条目,都没有 ID 和相同的 IP。
  • 我怀疑您的架构需要更改。也许 ip 应该在由主键链接的不同表中。

标签: php mysql distinct


【解决方案1】:

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

例子

SELECT id, GROUP_CONCAT(ip) as ips FROM logs 按 id 分组

编辑:忘记分组

【讨论】:

  • 你是这个星球上最了不起的人,你救了我很多年!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 2015-11-20
  • 1970-01-01
相关资源
最近更新 更多