我有一个返回大量int和varchars的查询。
我希望结果与众不同,但只有一个整数。
SELECT DISTINCT
t.TaskID ,
td.[TestSteps]
FROM SOX_Task t
snip
有一种简单的方法吗?
答案 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
,我们需要知道表中的列以及您想要的分组。