【问题标题】:SQLite select query to get one row from multiple rows have same idSQLite选择查询从多行中获取一行具有相同的ID
【发布时间】:2015-10-31 12:03:11
【问题描述】:

我正在尝试从表中获取一行,该表的 id 列在 SQlite 数据库的几行中重复,但我正在获取表中的所有行。

这是我的表创建和选择查询。

CREATE TABLE IMAGES ( MID INTEGER , IMAGE BLOB, ID INTEGER );


SELECT DISTINCT ID, IMAGE  FROM IMAGES;

这是我得到的

mid | image | id
 1  |  m1   |  1
 2  |  m2   |  1
 3  |  m3   |  1
 4  |  m4   |  2
 5  |  m5   |  3
 6  |  m6   |  3

这就是我想要的

mid | image | id
 1  |  m1   |  1
 4  |  m4   |  2
 5  |  m5   |  3

【问题讨论】:

    标签: sqlite select duplicates row


    【解决方案1】:

    DISTINCT 适用于所有 SELECTed 列,即,您会在数据中获得 idimage 的每个唯一组合。

    要控制对哪些列进行重复数据删除,请使用 GROUP BY。 您还必须为每个 ID 指定您想要的图像;如果你不使用 MIN(),你会得到一个随机的图像:

    SELECT id, MIN(image)
    FROM images
    GROUP BY id;
    

    【讨论】:

      【解决方案2】:

      您需要选择正确的列

      SELECT min(mid) FROM images GROUP BY id;
      

      那么你需要用它来选择正确的行。

      SELECT DISTINCT ID, IMAGE  FROM IMAGES WHERE mid in (SELECT min(mid) FROM images GROUP BY id);
      

      否则,来自 GROUP BY 的记录可以由任何(或最后一个)行组成。

      【讨论】:

        猜你喜欢
        • 2016-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 2023-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多