SQL 查询到 select 一个字段按其他字段排序

SQL Query to select one field order by other field

我想 select select 语句中的一个字段并用另一个字段排序,但 sql 服务器不允许这样做,因为它说按项目排序必须出现在select 语句如果指定了 select distinct。

这是我试过的:

select DISTINCT format_type
from Labels_Add_Label
where external_group_id= 2826
order by group_sequence

需要对此查询进行哪些更改?

请提供更改后的查询

您可以这样重写您的查询(等同于 distinct):

SELECT format_type
FROM Labels_Add_Label
WHERE external_group_id= 2826
GROUP BY format_type;

并且您不能在此处使用 ORDER BY group_sequence。 format_type相同但group_sequence不同的行可能不止一行。 SQL 服务器不知道应该使用哪一个进行排序。

但是您可以将聚合函数与 GROUP BY 查询一起使用:

SELECT format_type
FROM Labels_Add_Label
WHERE external_group_id= 2826
GROUP BY format_type;
ORDER BY MIN(group_sequence) ;   -- or MAX(group_sequence)

我只是回答这个问题来测试我的知识,并提供了以下解决方案(在 MS SQL 服务器中使用 CTE),如果我错了请纠正我 - 使用 NORTHWIND 数据库(员工 Table) 在 MS SQL 服务器上,我已经编写了这个查询 - 如果需要的话,这可能是可以使用的另一个选项!

WITH CTE_Employees(FirstName, LastName, BirthDate)
AS
(
    SELECT FirstName, LastName, BirthDate 
    FROM Employees
    WHERE Region IS NOT NULL
)
SELECT FirstName FROM CTE_Employees ORDER BY BirthDate DESC

如上所述,可以有相同的员工名字但姓氏不同,因此SQL服务器强加了一个条件,我们不能将 DISTINCT 与 ORDER BY 结合使用...

希望对您有所帮助!