![](/img/trans.png)
[英]Select All Columns From Table With 1 Distinct Column and a Where Condition
[英]Select all from a table, where 2 columns are Distinct
嗨,我有一张交易表,我需要返回整个表,但我需要区分标题和价格,因为有很多双倍价格,我在下面放置了一个示例场景
Col ID || Col Title || Col Price || Col Source
a b c d
a b c b
b a a c
b a a 1
预期结果:
a b c d
b a a c
我不确定是否在这里使用 distinct 或 group by,任何建议将不胜感激
干杯
斯科特
========================
看了你的一些建议,我将不得不重新考虑这一点,谢谢大家
这将为每个不同的 (price,title) 对任意选择一行
;WITH myCTE AS
(
SELECT
*,
ROWNUMBER() OVER (PARTITION BY Price, Title ORDER BY Source) AS rn
FROM
MyTable
)
SELECT
*
FROM
myCTE
WHERE
rn = 1
您可以使用 group by,但要仅返回标题和价格,则必须忽略 ID 和来源
您要的是整个表,但在您的示例 output 中,您丢失了两条记录,因此丢失了“Col Source”的值。
a b c b
b a a 1
Group By 将帮助您编写非常简单的查询
select id, title, price, source from table group by title, price
DISTINCT
和GROUP BY
通常生成相同的查询计划,因此两种查询构造的性能应该相同。 应该使用GROUP BY
将聚合运算符应用于每个组。 如果您只需要删除重复项,请使用DISTINCT
。 如果您使用子查询,则该查询的执行计划会有所不同,因此在这种情况下,您需要在决定哪个更快之前检查执行计划。
您应该将 GROUP BY 的 go 作为结果集中所需的整个列。 但是,DISTINCT 将仅返回特定列的唯一列表。
SELECT ID, Title, Price, Source
FROM table as t
GROUP BY Title, Price
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.