SQL-选择特定的结果

SQL-选择特定的结果,sql,select,Sql,Select,例如,我有一个包含两列的表。第一列具有唯一值,第二列重复。有没有办法只从第一列相对于第二列选择第一个唯一值 例如:由于它们是第二列类别的第一个结果,因此结果只能得到:Apple、Tire和Fork 细节 类别 苹果 水果 香蕉 水果 轮胎 汽车 发动机 汽车 叉 银器 勺子 银器 刀 银器 如果我理解正确,试试这个- 选择category,details from select*,row number over partition by category order by details as

例如,我有一个包含两列的表。第一列具有唯一值,第二列重复。有没有办法只从第一列相对于第二列选择第一个唯一值

例如:由于它们是第二列类别的第一个结果,因此结果只能得到:Apple、Tire和Fork

细节 类别 苹果 水果 香蕉 水果 轮胎 汽车 发动机 汽车 叉 银器 勺子 银器 刀 银器
如果我理解正确,试试这个-


选择category,details from select*,row number over partition by category order by details as rn from tablename,其中rn=1

如果我理解正确,请尝试以下操作-

选择类别,从select*中选择详细信息,按类别按详细信息排序的分区上的行号为rn from tablename,其中rn=1表示无序集。除非列指定值,否则没有第一个值。如果您有这样一列,则可以使用行号:

如果没有这样的列,那么就不能在关系数据库中提出这样的问题。数据不支持该问题。

SQL表表示无序集。除非列指定值,否则没有第一个值。如果您有这样一列,则可以使用行号:


如果没有这样的列,那么就不能在关系数据库中提出这样的问题。数据不支持该问题。

通常我们可以使用窗口功能来简化这些类型的查询,但是您请求的记录集没有自然的排序顺序,因此无法使用该排序顺序来生成您期望的输出

以下是一个使用行号的简单解决方案,但不会产生您所要求的结果:

SELECT Category, Details
FROM
(
  SELECT Category, Details, row_number() over (partition by category order by details) as rn 
  FROM SpecificResults
) as numberedRecords
WHERE rn = 1;
结果:

类别 细节 汽车 发动机 水果 苹果 银器 叉
通常,我们可以使用窗口功能来简化这些类型的查询,但是您请求的记录集没有一个自然的排序顺序,因此无法使用该排序顺序来生成您期望的输出

以下是一个使用行号的简单解决方案,但不会产生您所要求的结果:

SELECT Category, Details
FROM
(
  SELECT Category, Details, row_number() over (partition by category order by details) as rn 
  FROM SpecificResults
) as numberedRecords
WHERE rn = 1;
结果:

类别 细节 汽车 发动机 水果 苹果 银器 叉
这个语句first results的问题是没有明确的排序条件。例如,如果我们对水果进行数字排序,苹果是水果的第一个,但轮胎不是,如果我们对细节列进行排序,那么引擎将是第一个。如果我们根本不进行排序,那么结果是不可重复的。看看这样的讨论。这句话的问题是没有明确的排序条件。例如,如果我们对水果进行数字排序,苹果是水果的第一个,但轮胎不是,如果我们对细节列进行排序,那么引擎将是第一个。如果我们根本不排序,那么结果是不可重复的。看看这样的讨论,一个轮胎并不是排序中的第一个,正如@ChrisSchaller的评论中提到的那样,你是对的,@Charlieface。谢谢你指出这一点。我忽略了它,因为问题是关于排序顺序的模棱两可。但是,我喜欢其他的反应。投票支持它。正如@ChrisSchaller的评论中提到的那样,轮胎并不是第一个订购,你是对的,@Charlieface。谢谢你指出这一点。我忽略了它,因为问题是关于排序顺序的模棱两可。但是,我喜欢其他的反应。投票支持它。解释得很好,深入考虑了所有的可能性。我远离这种想法。解释得很好,深入考虑了所有的可能性。我远离这种想法。