2015-09-25 46 views
-1

使用不同的我想要运行的查询如何在第三列

select first_name, last_name, distinct salary from employees 

但它抛出一个错误。而如果我使用这select distinct salary, first_name, last_name from employees它运行。

我想在第一列的形式o/p应该first_name然后last_name然后明确的薪水。

+3

DISTINCT属于SELECT关键字,即它是SELECT DISTINCT。它适用于整个选定的行。 – jarlh

+2

如果几个不同的人有相同的工资,你会期望什么结果? – jarlh

+2

这甚至意味着什么?你能发布一些样本数据和你试图得到的结果吗? – Mureinik

回答

1

试试这个!

SELECT Salary, First_Name, Last_Name 
FROM table_name 
GROUP BY Salary 

上面应该返回共享相同工资的人的名字和姓氏列表。

如果您的数据集包含重复行,你可能想这样做是为了摆脱重复行:

WITH salaries 
    AS (SELECT DISTINCT Salary, 
          First_Name, 
          Last_Name 
      FROM table_name) 
    SELECT Salary, 
      First_Name, 
      Last_Name 
    FROM salaries 
    GROUP BY Salary; 
+0

这是哪个dbms? (没有指定dbms,所以假定ANSI SQL ...) – jarlh

+0

这是如果您正在运行MS SQL Server –

+0

SQL Server是否真的接受?!? – jarlh

0

这里的窍门,你应该先插入到临时表中的salary,再经过在那里你不同那你现在就可以用你想要的列安排选择临时表中的数据。

select distinct salary, first_name, last_name * into #temp from employees 

那么明显之后,你现在可以做你不distinct第二查询想要的东西。

select first_name, last_name, salary from #temp 
+0

这是该DBMS? (没有指定dbms,因此假定ANSI SQL ...) – jarlh

+0

请记住,在整行上选择不同的作品... – jarlh

+0

@jarlh假设使用SQL Server .. yup'select distinct'在整行上工作.. i创造了这个诀窍,这样他就不会遇到错误:) – Japongskie