【问题标题】:SQL Select Distinct with ints and varcharsSQL Select Distinct with ints 和 varchars
【发布时间】:2009-12-17 14:34:32
【问题描述】:

我有一个查询,它返回一些 int 和 varchars。

我想要结果 Distinct 但只有一个整数。

SELECT DISTINCT
        t.TaskID ,
        td.[TestSteps]
FROM    SOX_Task t
snip

有没有简单的方法来做到这一点?

【问题讨论】:

  • 您希望输出是什么样的?你可以只 SELECT DISTINCT int 列吗?
  • 这是一个非常模糊的问题 - 您能否提供更多关于您想要做什么以及您使用的数据库的详细信息?

标签: sql select distinct


【解决方案1】:

DISTINCT 不能那样工作......它确保整个行不重复。此外,如果有,它如何决定哪些值应该出现在其他列中?

您可能想要在这里做的是对您想要区分的列进行 GROUP BY,然后将适当的聚合运算符应用于其他列以获得您想要的值(例如 MIN、MAX、SUM、AVG等)。

例如,以下内容返回一个不同的任务 ID 列表,其中包含该任务的最大步骤数。这可能不是您想要的,但它应该给您一个大致的想法。

SELECT t.TaskID, MAX(t.TestSteps)
FROM SOX_Task t
GROUP BY t.TaskID

【讨论】:

    【解决方案2】:

    我想要结果 Distinct 但只有一个整数。

    这个:

    SELECT DISTINCT t.taskid
      FROM SOX_TASK t
    

    ...将返回唯一 taskid 值的列表 - 不会有任何重复。

    如果要返回特定的值,需要在WHERE子句中指定:

    SELECT t.*
      FROM SOX_TASK t
     WHERE t.taskid = ?
    

    这将返回具有特定 taskid 值的所有行。如果您想要与 taskid 值关联的值的 distict 列表:

    SELECT DISTINCT t.*
      FROM SOX_TASK t
     WHERE t.taskid = ?
    

    GROUP BY 是另一种获取不同/唯一值的方法,这是我的偏好,但为了使用 GROUP BY,我们需要知道表中的列以及您想要的分组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 2012-07-20
      • 2020-11-03
      • 2010-10-07
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多