在一列上选择distinct并返回其行

时间:2014-04-09 14:39:52

标签: mysql sql

这个问题很有可能被问到,但我在搜索时遇到了麻烦。

我希望返回一个来自唯一列的结果集。此结果集将包括唯一列和另一个字段。我遇到的问题是,如果我在唯一列和其他字段上使用distinct,我将收到唯一列的重复项,因为第2个字段有两个唯一元素。

我会尝试更好地展示我的目标。

工作订单表:

JPNUM      DESCRIPTION
=====      ===========
FE-JPINSP  BLAH BLAH
FE-JPINSP  BLAH BLAH BLAH
FE-JPINSP  BLAH BLAH
LAB-JPINSP LAB INSP BLAH

SQL:

SELECT DISTINCT JPNUM FROM WORKORDER WHERE WORKTYPE = 'INSP' AND PARENT = ''

此查询仅适用于返回唯一的JPNUM。但我也希望包含与该JPNUM相关的描述。如果我同时选择JPNUM和DESCRIPTION。我将收到重复的JPNUM特别是FE-JPINSP。

我遗漏了表格中的几列。但是你应该有个主意。

2 个答案:

答案 0 :(得分:1)

您的问题并未解释如何应对数据中的歧义。事实上,DESCRIPTION列中的F-JPINSP列与JPNUM列中的值SELECT JPNUM, MAX(DESCRIPTION) AS DESCRIPTION FROM WORKORDER WHERE WORKTYPE = 'INSP' AND PARENT = '' GROUP BY JPNUM ORDER BY JPNUM 相关联。

我会猜测,你想要词法最后(在这种情况下更长)的值。

尝试此查询。

{{1}}

答案 1 :(得分:0)

只需按JPNUM分组,并使用MIN,MAX或GROUP_CONCAT获取您最喜欢的描述:

SELECT JPNUM, MIN(DESCRIPTION)
FROM WORKORDER 
WHERE WORKTYPE = 'INSP' AND PARENT = ''
GROUP BY JPNUM;
相关问题