上面的影像是一个网站的资源表的图像正在建设一个Android应用程序。请为我的英语不好,差的解释对不起,我会尽量解释,以尽我所能。我有一个表称为资源,如下所示,这是另一张表称为产品的一部分。产品表就是关于产品的信息存储,而资源表是其中存储的图像名称和存储方向。每个图像具有一个单独的线。现在,如果我尝试运行一个查询链接或加入的产品和资源表我开始越来越因为资源的图像的复制/重复的输出值。
下面是产品表
pk_i_id | fk_i_user_id | p_name | p_description | etc
1 4 iphone Iphone X
2 4 Cloth Gucci
3 6 watch Rolex Watch
4 3 car Venza
5 7 tractor CAT
6 9 Fruits Melon
下面是资源表
pk_i_id | fk_i_item_id | s_name | s_extension | s_content_type | s_path
1 2 xDSDki0F jpg image/jpeg oc-content/uploads/0/
2 2 GAsk8vqW jpg image/jpeg oc-content/uploads/0/
3 3 D033Znu1 jpg image/jpeg oc-content/uploads/0/
4 3 yZSPKeCj jpg image/jpeg oc-content/uploads/0/
5 5 rc8wCLOQ jpg image/jpeg oc-content/uploads/0/
6 5 tUWBh6vk jpg image/jpeg oc-content/uploads/0/
8 6 v3rSPl9s jpg image/jpeg oc-content/uploads/0/
9 7 8FTuKvgl jpg image/jpeg oc-content/uploads/0/
10 7 fzb2KzYq jpg image/jpeg oc-content/uploads/0/
11 7 9Qs7MgUl jpg image/jpeg oc-content/uploads/0/
12 8 3HmpjxC7 jpg image/jpeg oc-content/uploads/0/
13 8 VF4M6PrE jpg image/jpeg oc-content/uploads/0/
14 8 tnIH7LqU jpg image/jpeg oc-content/uploads/0/
15 8 M5jKALrD jpg image/jpeg oc-content/uploads/0/
16 9 vBBSSfoD jpg image/jpeg oc-content/uploads/0/
如果我做这样的查询
select * products p, resource r where p.pk_i_id=r.fk_i_item_id
它会给我多重复查询由于资源的图像存储的多个部分。如果关于汽车图像是3查询将显示三次车的重复查询。
从上表来看,如果我试图从这里开始使用这个下面的查询来获取”
select * from osoe_t_item_resource
它会显示所有在应用上述那些表值。
请我需要一个查询,将组具有相同fk_i_item_id作为另一列例子项目
而不是像出现低于这个输出
{"NewsApp":[
{"pk_i_id":"1","fk_i_item_id":"2","s_name":"xDSDki0F
{"pk_i_id":"2","fk_i_item_id":"2","s_name":"GAsk8vqW
{"pk_i_id":"3","fk_i_item_id":"3","s_name":"D033Znu1"},
{"pk_i_id":"4","fk_i_item_id":"3","s_name":"yZSPKeCj"},
{"pk_i_id":"5","fk_i_item_id":"5","s_name":"rc8wCLOQ"},
{"pk_i_id":"6","fk_i_item_id":"5","s_name":"tUWBh6vk"},
{"pk_i_id":"8","fk_i_item_id":"6","s_name":"v3rSPl9s"},
{"pk_i_id":"9","fk_i_item_id":"7","s_name":"8FTuKvgl"},
{"pk_i_id":"10","fk_i_item_id":"7","s_name":"fzb2KzYq"},
{"pk_i_id":"11","fk_i_item_id":"7","s_name":"9Qs7MgUl"},
{"pk_i_id":"12","fk_i_item_id":"8","s_name":"3HmpjxC7"},
{"pk_i_id":"13","fk_i_item_id":"8","s_name":"VF4M6PrE"},
{"pk_i_id":"14","fk_i_item_id":"8","s_name":"tnIH7LqU"},
{"pk_i_id":"15","fk_i_item_id":"8","s_name":"M5jKALrD"},
{"pk_i_id":"16","fk_i_item_id":"9","s_name":"vBBSSfoD"},
{"pk_i_id":"17","fk_i_item_id":"9","s_name":"kUt65zVb"},
{"pk_i_id":"18","fk_i_item_id":"9","s_name":"D5DXAszv"},
它应该出现这样的输出
{"NewsApp":[
{"pk_i_id":"1","fk_i_item_id":"2","s_name":"xDSDki0F","s_name2":"GAsk8vqW"},
{"pk_i_id":"3","fk_i_item_id":"3","s_name":"D033Znu1","s_name2":"yZSPKeCj"},
{"pk_i_id":"5","fk_i_item_id":"5","s_name":"rc8wCLOQ","s_name2":"tUWBh6vk"},
{"pk_i_id":"8","fk_i_item_id":"6","s_name":"v3rSPl9s"},
{"pk_i_id":"9","fk_i_item_id":"7","s_name":"8FTuKvgl","s_name2":"fzb2KzYq","s_name3":"9Qs7MgUl"},
{"pk_i_id":"12","fk_i_item_id":"8","s_name":"3HmpjxC7"},
{"pk_i_id":"13","fk_i_item_id":"8","s_name":"VF4M6PrE","s_name2":"tnIH7LqU","s_name":"M5jKALrD"},
{"pk_i_id":"16","fk_i_item_id":"9","s_name2":"vBBSSfoD"},
{"pk_i_id":"17","fk_i_item_id":"9","s_name":"kUt65zVb","s_name2":"D5DXAszv"},
如果你仔细观察,任何时候都使用相同的ID在一个出合并在一起,
请帮助我。
我understant的是,当有与同一fk_i_item_id
记录,你要保留只有一个,它具有最低pk_i_id
。
如果你正在使用MySQL 8.0,这是与窗口函数ROW_NUMBER()
简单:
SELECT x.pk_i_id, x.fk_i_item_id, x.s_name
FROM (
SELECT
r.*,
ROW_NUMBER() OVER(PARTITION BY r.fk_i_item_id ORDER BY r.pk_i_id) rn
FROM resource r
) x WHERE x.rn = 1
内部查询行列fk_i_item_id
基团内的每个记录,并且外部查询过滤掉重复。
如果您正在运行MySQL的早期版本,您可以使用与确保没有其他记录具有相同NOT EXIST
和较低的fk_i_item_id
存在相关子查询一个pk_i_id
条件:
SELECT r.pk_i_id, r.fk_i_item_id, r.s_name
FROM resource r
WHERE NOT EXISTS (
SELECT 1
FROM resource r1
WHERE r1.fk_i_item_id = r.fk_i_item_id AND r1.pk_i_id < r.pk_i_id
)