繁体   English   中英

Select 全部来自一个表,其中 2 列是不同的

[英]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

DISTINCTGROUP 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM