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 结合使用...
希望对您有所帮助!
我想 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 结合使用...
希望对您有所帮助!