SQL选择与int和varchars不同

时间:2009-12-17 14:34:32

标签: sql select distinct

我有一个返回大量int和varchars的查询。

我希望结果与众不同,但只有一个整数。

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

有一种简单的方法吗?

2 个答案:

答案 0 :(得分:3)

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

你可能想要做的是在你想要区分的列上的GROUP BY,然后将适当的聚合运算符应用到其他列以获得所需的值(例如MIN,MAX,SUM,AVG)等等。)

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

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

答案 1 :(得分:1)

  

我希望结果与众不同,但只有一个整数。

此:

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,我们需要知道表中的列以及您想要的分组。