SQLite select 查询从具有相同 id 的多行中获取一行
SQLite select query to get one row from multiple rows have same id
我试图从 table 中获取一行,该行的 id 列在 SQlite 数据库的多行中重复,但我正在获取 table 中的所有行。
这是我的 table 创建和选择查询。
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
DISTINCT 适用于所有 SELECTed 列,即,您在数据中获得 id
和 image
的每个唯一组合。
要控制对哪些列进行重复数据删除,请使用 GROUP BY。
您还必须为每个 ID 指定您想要的图像;如果你不使用 MIN(),你会得到一个随机图像:
SELECT id, MIN(image)
FROM images
GROUP BY id;
您需要选择正确的列
SELECT min(mid) FROM images GROUP BY id;
然后你需要用它来 select 正确的行。
SELECT DISTINCT ID, IMAGE FROM IMAGES WHERE mid in (SELECT min(mid) FROM images GROUP BY id);
否则 GROUP BY 中的记录可以由任何(或最后)行组成。
我试图从 table 中获取一行,该行的 id 列在 SQlite 数据库的多行中重复,但我正在获取 table 中的所有行。
这是我的 table 创建和选择查询。
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
DISTINCT 适用于所有 SELECTed 列,即,您在数据中获得 id
和 image
的每个唯一组合。
要控制对哪些列进行重复数据删除,请使用 GROUP BY。 您还必须为每个 ID 指定您想要的图像;如果你不使用 MIN(),你会得到一个随机图像:
SELECT id, MIN(image)
FROM images
GROUP BY id;
您需要选择正确的列
SELECT min(mid) FROM images GROUP BY id;
然后你需要用它来 select 正确的行。
SELECT DISTINCT ID, IMAGE FROM IMAGES WHERE mid in (SELECT min(mid) FROM images GROUP BY id);
否则 GROUP BY 中的记录可以由任何(或最后)行组成。