【发布时间】:2015-10-05 14:36:09
【问题描述】:
我有一个类似的查询,下面给出了以下结果。对于一个给定的 pcid,可能有一个或多个图像。如果 pcid 返回的图像超过 1 个,我只想获取第一条记录。我知道 distinct 在这种情况下不起作用。任何想法将不胜感激。谢谢
select p.pcid,p.pc_name,p.pc_image_name
from pc p LEFT JOIN pc_goods pcm on p.pcid = pcm.pcid AND pcm.media_type = 'I'
AND pcm.act_ind = 'Y' AND pcm.fea_ind = 'Y' INNER JOIN pc_cat pcat
ON p.category_id = pcat.cat_id
and p.fea_ind = 'Y' AND p.act_ind = 'Y'
order by pcid
Current results
pcid pc_name pc_image_name
--------------------------------
1120 testone one.jpg
1120 testwo two.jpg
1121 testthree three.png
1125 testfour four.png
1128 test5 five.jpg
1128 test6 six.jpg
想要的结果,
pcid pc_name pc_image_name
--------------------------------
1120 testone one.jpg
1121 testthree three.png
1125 testfour four.png
1128 test5 five.jpg
【问题讨论】:
-
你如何表示“第一”是有日期时间还是只需要任何记录?如果是这样,您始终可以在子查询中对图像名称使用 min 然后加入。使用 PC_goods 表的内联视图使用 min/max 返回每个 PCID 的单个记录,然后将其加入结果集中。或者,您可以生成一个行号字段并返回每个 PCiD 仅为 1 的位置。 Example:
-
是的,它是任何 img 记录
-
我不明白为什么您的查询需要在
pc_goods上进行左连接?
标签: sql oracle greatest-n-per-group