我有一个包含由七个字段组成的复合主键的表:
PK COD_LTN
PK COD_CANA
PK COD_FAM_PRO
PK COD_CTG_PRO
PK COD_PRO
PK COD_CFG_PRM_PRO
PK COD_FAM_PRM_PRO
我有两个记录:
COD_LTN COD_CANA COD_FAM_PRO COD_CTG_PRO COD_PRO COD_CFG_PRM_PRO COD_FAM_PRM_PRO
00011 SPO NF C01 53 A PZTR
00011 SPO NF C01 53 B PZTR
我想选择不考虑字段COD_CFG_PRM_PRO的所有不同记录:
SELECT DISTINCT
COD_LTN,
COD_CANA,
COD_FAM_PRO,
COD_CTG_PRO,
COD_PRO,
-- COD_CFG_PRM_PRO, don't consider this
COD_FAM_PRM_PRO
FROM
PRM_STATICO_PRO
WHERE
COD_PRO=53;
当然有效:
COD_LTN COD_CANA COD_FAM_PRO COD_CTG_PRO COD_PRO COD_FAM_PRM_PRO
00011 SPO NF C01 53 PZTR
但我还想选择使记录区别的字段COD_CFG_PRM_PRO
,即我只想要一条记录:
COD_LTN COD_CANA COD_FAM_PRO COD_CTG_PRO COD_PRO COD_CFG_PRM_PRO COD_FAM_PRM_PRO
00011 SPO NF C01 53 A PZTR
我找不到。
答案 0 :(得分:2)
你可以使用group by和min函数来解决这个问题 -
SELECT Cod_Ltn,
Cod_Cana,
Cod_Fam_Pro,
Cod_Ctg_Pro,
Cod_Pro,
MIN(Cod_Cfg_Prm_Pro),
Cod_Fam_Prm_Pro
FROM Prm_Statico_Pro
WHERE Cod_Pro = 53
GROUP BY Cod_Ltn,
Cod_Cana,
Cod_Fam_Pro,
Cod_Ctg_Pro,
Cod_Pro,
Cod_Fam_Prm_Pro;
这将给出您期望的结果..